Winforms 与WebBrowser控件C中的Flash文件通信#

Winforms 与WebBrowser控件C中的Flash文件通信#,winforms,c#-4.0,flash,Winforms,C# 4.0,Flash,我正在开发一个具有Web浏览器控件的windows应用程序。在某些链接上,Web浏览器加载了.SWF(flash文件),在该flash中,有一个按钮带有标题“开始”,当用户单击该按钮时,一些动画开始 我希望在用户单击“开始”按钮时发生该事件。 我可以这样做吗? 我不能在.SWF文件中放入任何代码。? 有什么想法吗?您必须使用外部接口。首先,我们需要导入这个新类,以便使用它(仅限as2,在as3中,它将在不导入的情况下工作): 下一步,我们必须注册我们希望在外部可用的任何功能: ExternalI

我正在开发一个具有Web浏览器控件的windows应用程序。在某些链接上,Web浏览器加载了
.SWF
(flash文件),在该flash中,有一个按钮带有标题“开始”,当用户单击该按钮时,一些动画开始

我希望在用户单击“开始”按钮时发生该事件。 我可以这样做吗? 我不能在
.SWF
文件中放入任何代码。?
有什么想法吗?

您必须使用外部接口。首先,我们需要导入这个新类,以便使用它(仅限as2,在as3中,它将在不导入的情况下工作):

下一步,我们必须注册我们希望在外部可用的任何功能:

ExternalInterface.addCallback("addText", addText);
基本上,上面的代码将允许我们从C#应用程序调用addText函数(我将在一分钟后显示)。 addText函数如下所示。基本上,它接受字符串输入并将其附加到文本框中

function addText(val:String):void
{
      inTxt.appendText(val + "\n"); // append text recieved from c#
}
从ActionScript的角度来看就是这样。现在我们需要做的就是从C#调用函数。首先,我将Flash Player ActiveX控件的一个实例添加到表单中,并加载我们在表单的构造函数中创建的SWF:

private AxShockwaveFlash player;

public DemoForm ()
{
      ...
      player.LoadMovie(0,Application.StartupPath + "\\EITest.swf");
      player.Play();
      ...
 }
接下来,我们要做的就是调用外部化 方法。在我的例子中,这是对用户单击“发送”按钮的响应:

 private void sendBtn_Click(object sender, EventArgs e)
 {
     player.CallFunction("" + outTxt.Text + "");
  }
函数addText(val:String):无效方法在ActionScript中,对吗?如果是,则很抱歉我无法执行此操作,因为我无法在AS中添加任何方法。
 private void sendBtn_Click(object sender, EventArgs e)
 {
     player.CallFunction("" + outTxt.Text + "");
  }