有没有办法让 C# 获取 swf 通过 ExternaInterface 公开的方法列表?
最佳答案
更新:
刚意识到我误读了您的问题,因为您正在寻找通过 Flex ExternalInterface class
定义的方法而不是 Shockwave ActiveX 控件
本身的那些;我将在下面保留我的原始答案,因为它可能仍然对通过 C# 使用 SWF
有帮助。
关于 ExternalInterface
我现在没有答案,但你可以查看 Fun with C# and the Flash Player 8 External API首先了解如何通过 C# 使用此 API。 (另一个有用的示例可能是 Use External Interface of Flash 8 in Python and C# Applications。)
从我在前一篇文章中读到的内容来看,可能没有直接的解决方案和通过传递精心设计的调用约定 XML fragments至 CallFunction()
有点古怪,你仍然应该能够翻译 Georges solution原则上(正如我所说,它可能不会很漂亮;)
祝你好运!
如何通过 COM 互操作性从 .NET 访问 SWF:
SWF
Windows 是通过 Adobe Flash Player 实现的ActiveX control ,因此您可以通过 COM Interoperability 从 .NET 使用它.
您可以在 Adobe 网站上找到与此相关的(遗留)文章/示例,请参阅 Embedding Macromedia Flash Player in a C# Application to Display Stock Information有关概述(请注意文章关于示例代码不可用的介绍性说明),但请参阅下文。
更具体地说,您可以在本文的另一页找到实现目标所需的初始步骤,请参阅 Embedding and Communicating with the Macromedia Flash Player in C# Windows Applications - 特别是请遵循文章/步骤,直至并包括使 Macromedia Flash Player ActiveX 控件在 Visual Studio .NET 中可用部分。
一旦您完成了将 Shockwave ActiveX 控件
添加到您的工具箱和特定项目引用的概述步骤后,您只需双击该引用(名为 ShockwaveFlashObjects
Visual Studio 2008),这将打开 Visual Studio object browser突出显示 assembly Interop.ShockwaveFlashObjects
;然后向下导航到 namespace ShockwaveFlashObjects
,您将在其中找到 interface IShockwaveFlash
,公开(取决于您的 View 过滤器)它的所有成员,包括所需的具有各自 C# 签名的外部方法。
关于C#与Flash通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1353525/