我的项目要求我的最终应用程序完全自包含在单个exe中。我已经使用ILMerge(assmebly merge utility)组合了可执行文件和dll。我在C#应用程序中托管一个flash主动x控件,我已经将需要加载到flash控件中的一个swf嵌入到c#应用程序中作为嵌入资源。
This question shows how to write the resource to a temporary file,但不建议为我的情况创建临时文件。这会产生问题,因为活动x控件loadMovie方法只接受指向要加载的文件的字符串。
我的问题是:是否可以在不创建临时文件的情况下将嵌入的swf资源动态加载到flash active x控件中?
答案 0 :(得分:1)
我最终使用的解决方案是将所有必需的swf文件打包到包装器swf的库中。
然后我将activex控件的movie属性设置为包装器swf,并将activex控件上的embed标志设置为true。这将swf直接嵌入到activex控件中。我不会在C#中进行任何加载,而是在活动x控件上调用play()方法来初始化已嵌入的swf文件。
基本上如果嵌入资源,就没有必要在C#中进行,我可以将它嵌入到swf中。然后我在闪存包装swf中完成了所有的装载和卸载。
答案 1 :(得分:1)
你可以将swf文件添加到资源然后在runtinme读取文件作为字节数组将其发送到此function
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(YourForm));
System.Byte[] data = (System.Byte[])(resources.GetObject("FileName"));