把swf做为内嵌资源使用,试试

解决方案 »

  1.   

    把swf编译进bin?!
    也许我学的太浅
    但在我看来似乎是荒唐!
      

  2.   

    你想放在exe文件里面最简单的方式就是使用内嵌资源,其他的就很麻烦的。
      

  3.   

    那是不可能的,exe里不可能嵌入exe,如果嵌入swf,必须通过控件关联,播放时还是脱离不了原来的环境,就象doc需要word一样。另外,c#单独打包成exe 也需要运行环境的支持,它并不能把dll文件打进去,又有什么意义。
      

  4.   

    exe里不可能嵌入exe,如果嵌入swf,????
    谁说不可以???资源可以是任何文件,任何文件需要的时候都可以取出来!
      

  5.   

    可以把SWF放进资源文件中,这样就等于嵌入exe了。不过最后还是要从资源文件中读出来并在硬盘上生成一个实际成在的SWF文件,才能用Shochwave播放的,因为NET中并没有提供SWF文件相关的类。而图象文件因为有IMAGE类,所以不用生成文件就可以用picturebox显示了!!!
      

  6.   

    谢谢楼上的,关于嵌入swf估计也只能这样了,我看到有人提议把swf转换为gif,再作为内嵌资源。可能这是一个笨办法,而且稍微复杂的带脚本程序的swf就不行了。那么 webserv2(GIS)(CAU)  说的可以再具体一点吗?
      

  7.   

    佩服 BearRui(孤熊 | 爱情!它把我给忘了!)
      

  8.   

    ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemresourcesresourcemanagerclasstopic.htm
    ResourceManager 类可以查找区域性特定的资源,当本地化资源不存在时提供代用资源,并支持资源序列化。通过 ResourceManager 的方法,调用方可使用 GetObject 和 GetString 两种方法访问特定区域性的资源。默认情况下,这些方法返回某区域性的资源,该区域性由执行调用的线程的当前区域性设置决定。(有关详细信息,请参见 Thread.CurrentUICulture。)调用方可使用 ResourceManager.GetResourceSet 方法获取表示特定区域性的资源的 ResourceSet,并忽略区域性代用规则。然后可以使用 ResourceSet 来按名称访问为该区域性本地化的资源。理想情况下,应该为每种语言创建资源,或者至少为每种语言的有意义子集创建资源。资源文件名遵循“基名称.区域性名称.resources”的命名约定,其中基名称是应用程序名或类名(取决于期望的详细程度)。CultureInfo 的 Name 属性用来确定区域性名称。非特定语言区域性的资源(由 InvariantCulture 返回)应该命名为“基名称.resources”。例如,假定某个程序集在基名称为 "MyResources" 的资源文件中有几个资源。这些资源文件的名称将为 "MyResources.ja-JP.resources"、"MyResources.de.resources"、"MyResources.zh-CHS.resources" 或 "MyResources.fr-BE.resources" 等,它们分别包含用于日语、德语、简体中文和法语(比利时)的资源。默认资源文件应该命名为 MyResources.resources。区域性特定的资源文件通常打包在每种区域性的附属程序集内。默认资源文件应该在主程序集内。现在假定已创建 ResourceManager 来表示具有此基名称的资源。通过使用 ResourceManager,可以调用 GetResourceSet(new CultureInfo ("ja-JP"), TRUE, FALSE),从而获取封装 "MyResources.ja-JP.resources" 的 ResourceSet。或者,如果已知 "MyResources" 包含名为 "TOOLBAR_ICON" 的资源,则可通过调用 GetObject("TOOLBAR_ICON", new CultureInfo("ja-JP")),获取针对日本进行了本地化的资源的值。尽管不是 ResourceManager 的最基本用法所严格要求的,但是公开发布的程序集应使用 SatelliteContractVersionAttribute 来支持在不重新部署附属程序集的情况下控制主程序集的版本,并使用 NeutralResourcesLanguageAttribute 来避免查找可能根本不存在的附属程序集。有关附属程序集版本支持的更多信息,请参见检索附属程序集中的资源。若要了解有关创建附属程序集的更多信息,请参见创建附属程序集。有关 Windows 窗体对话框的本地化方面的帮助,请参见 Microsoft .NET Framework SDK 中的 Windows 窗体资源编辑器 (Winres.exe) 工具。若要了解有关设置和创建资源的更多信息,请参见应用程序中的资源。警告   使用 ASP.NET 应用程序中的独立 .resources 文件将破坏 XCOPY 部署,这是由于资源在由 ReleaseAllResources 方法显式释放之前一直处于锁定状态。如果要将资源部署到 ASP.NET 应用程序中,则应该将 .resources 编译到附属程序集中。
    警告   标记为私有的资源只有在它们所在的程序集中才是可访问的。因为附属程序集中不包含任何代码,所以通过任何机制都不能使用它的私有资源。因此,附属程序集中的资源应始终为公共的,以便可从主程序集中访问它们。嵌入到主程序集中的资源(无论是私有的还是公共的)对于主程序集来说都是可访问的。
    ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemresources.htmms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemresourcesresourcewriterclasstopic.htmResourceWriter 提供 IResourceWriter 接口的默认实现。
    使用 AddResource 方法将资源指定为名称和值对。资源名在用于查找时是区分大小写的,但是,为更易于支持创作工具和帮助消除错误,ResourceWriter 将不允许使用仅大小写不同 .resources 文件名。
    若要创建一个资源文件,请用唯一的文件名创建 ResourceWriter,至少调用 AddResource 一次,再调用 Generate 将该资源文件写入磁盘,然后调用 Close 关闭该文件。如果需要,调用 Close 将隐式 { Generate } 该文件。
    写入资源的顺序无须与添加时的顺序一样。
    示例
    [Visual Basic, C#, C++] 下面的示例将若干个字符串写入到 myResources.resources 文件中。
    [Visual Basic] 
    Imports System
    Imports System.ResourcesPublic Class WriteResources
        
        Public Shared Sub Main()
            
            ' Creates a resource writer.
            Dim writer As New ResourceWriter("myResources.resources")
            
            ' Adds resources to the resource writer.
            writer.AddResource("String 1", "First String")
            
            writer.AddResource("String 2", "Second String")
            
            writer.AddResource("String 3", "Third String")
            
            ' Writes the resources to the file or stream, and closes it.
            writer.Close()
        End Sub
    End Class
    [C#] 
    using System;
    using System.Resources;
    public class WriteResources {
       public static void Main(string[] args) {
          
          // Creates a resource writer.
          IResourceWriter writer = new ResourceWriter("myResources.resources");
        
          // Adds resources to the resource writer.
          writer.AddResource("String 1", "First String");      writer.AddResource("String 2", "Second String");      writer.AddResource("String 3", "Third String");      // Writes the resources to the file or stream, and closes it.
          writer.Close();
       }
    }
    [C++] 
    using namespace System;
    using namespace System::Resources;
    void main(char** argc, int argv) {    // Creates a resource writer.
        IResourceWriter* writer = new ResourceWriter(S"myResources.resources");    // Adds resources to the resource writer.
        writer->AddResource(S"String 1", S"First String");    writer->AddResource(S"String 2", S"Second String");    writer->AddResource(S"String 3", S"Third String");    // Writes the resources to the file or stream, and closes it.
        writer->Close();
    }Visual Basic, C#, C++] 下面的代码示例将在控制台上显示“myResources.resources”文件的内容:[Visual Basic] 
    Imports System
    Imports System.Resources
    Imports System.CollectionsPublic Class ReadResources
        
        Public Shared Sub Main()
            
            ' Opens a resource reader and get an enumerator from it.
            Dim reader As New ResourceReader("myResources.resources")
            Dim en As IDictionaryEnumerator = reader.GetEnumerator()
            
            ' Goes through the enumerator, printing out the key and value pairs.
            While en.MoveNext()
                Console.WriteLine()
                Console.WriteLine("Name: {0}", en.Key)
                Console.WriteLine("Value: {0}", en.Value)
            End While
            reader.Close()
            
        End Sub
    End Class[C#] 
    using System;
    using System.Resources;
    using System.Collections;
     
    public class ReadResources {   public static void Main(string[] args) {      // Opens a resource reader and gets an enumerator from it.
          IResourceReader reader = new ResourceReader("myResources.resources");
          IDictionaryEnumerator en = reader.GetEnumerator();
          
          // Goes through the enumerator, printing out the key and value pairs.
          while (en.MoveNext()) {
             Console.WriteLine();
             Console.WriteLine("Name: {0}", en.Key);
             Console.WriteLine("Value: {0}", en.Value);
          }
          reader.Close();
       }
    }[C++] 
    using namespace System;
    using namespace System::Resources;
    using namespace System::Collections;
     
    void main(char** argv, int argc) {      // Opens a resource reader and gets an enumerator from it.
          IResourceReader* reader = new ResourceReader(S"myResources.resources");
          IDictionaryEnumerator* en = reader->GetEnumerator();
          
          // Goes through the enumerator, printing out the key and value pairs.
          while (en->MoveNext()) {
              Console::WriteLine();
              Console::WriteLine(S"Name: {0}", en->Key);
              Console::WriteLine(S"Value: {0}", en->Value);
          }
          reader->Close();