C#应用程序适用于Win 7但不适用于XP

时间:2011-09-26 12:35:44

标签: c# flash dll actionscript interop

我在C#中构建了一个应用程序,并为此应用程序构建了一个设置。设置上的应用程序适用于所有Windows 7计算机,但似乎无法在任何XP计算机上运行。

我将简要描述我的应用程序的作用。

应用程序在启动时播放swf文件。 swf文件有3个具有单独功能的按钮。 基本上单击这些按钮,它必须显示从sqlite加载的某些图像。

问题是应用程序正确加载了swf,swf完全播放到最后,然后在我放置3个按钮的那一端,click事件不响应任何按钮。 我在猜测这是FSCommand的问题,并且dll没有正确注册

我添加到设置中的dll是

  • AxInterop.ShockwaveFlashObjects.dll
  • Interop.shockwaveFlashObjects.dll
  • System.Data.SQLite.dll
  • KP-ImageViewerV2.dll(来自codeproject.com)

此外,存在的文件是我的清单文件和.config文件

我尝试使用RegSrv32 C手动注册我的Dll:\ Interop.ShockwaveFlashObject.dll 还有C:\ AxInterop.ShockwaveFlashObject.dll 我得到的错误是

The (DllPath and Name Here) was loaded but DllRegisterServer entry point was not found.

我用来显示我的swf文件的代码如下所示

private void axShockwaveFlash1_FSCommand(object sender,AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEvent e)
 {
   string btn = e.command.ToString();
   if (btn == "play")
     {
       try
        {
        frmMain Main = new frmMain();
        Main.Show();
        this.Hide();
        }
        catch (Exception ex) 
        { MessageBox.Show(ex.ToString()); }
      }
      if (btn == "syllabus")
      {
         SQLiteConnectionStringBuilder strbldr = new SQLiteConnectionStringBuilder();
         strbldr.DataSource = @Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\TVC E-Excust Customs\\E-ExcustCustoms.s3db";
         SQLiteConnection con = new SQLiteConnection(strbldr.ConnectionString);
         con.Open();
         Syllabus_usageInformation syl = new Syllabus_usageInformation(this);
         SQLiteCommand cmd = new SQLiteCommand("SELECT ImageFiles FROM misc WHERE Name='Syllabus new'", con);
         SQLiteDataReader reader = cmd.ExecuteReader();
         byte[] imageBytes = null;
         while (reader.Read())
         {
          imageBytes = (System.Byte[])reader["ImageFiles"];
         }

         MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);
         con.Close();
         syl.kpImageViewer1.OpenButton = false;
         syl.kpImageViewer1.Image = (Bitmap)Image.FromStream(ms,true);
         syl.kpImageViewer1.Zoom = 85;
         syl.Show();
         this.Hide();
        }
        if (btn == "usageInformation")
        {
            SQLiteConnectionStringBuilder strbldr = new SQLiteConnectionStringBuilder();
            strbldr.DataSource = @Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\TVC E-Excust Customs\\E-ExcustCustoms.s3db";
            SQLiteConnection con = new SQLiteConnection(strbldr.ConnectionString);
            con.Open();
            Syllabus_usageInformation syl = new Syllabus_usageInformation(this);
            SQLiteCommand cmd = new SQLiteCommand("SELECT ImageFiles FROM misc WHERE Name='UsageInformation'", con);
            SQLiteDataReader reader = cmd.ExecuteReader();
            byte[] imageBytes = null;
            while (reader.Read())
            {
                imageBytes = (System.Byte[])reader["ImageFiles"];
            }

            MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);
            con.Close();
            syl.kpImageViewer1.OpenButton = false;
            syl.kpImageViewer1.Image = (Bitmap)Image.FromStream(ms, true);
            syl.kpImageViewer1.Zoom = 82;
            syl.Show();
            this.Hide();

        }
    }

我的swf文件有三个按钮,如上所述。那些按钮在影片剪辑中我也会粘贴AS代码 以下是其中一个按钮中发生的情况。剩下的2与这个相同,仅改变了值。 我对flash很新,但是这个问题可能是因为使用的AS版本/或运行此swf所需的最低版本的flash。再次提一下视频播放但按钮在XP上没有响应但是在7?

上工作
on (rollOver)
{
 if (_root.link != page)
 {
    this.gotoAndPlay("s1");
 }
}
on (releaseOutside, rollOut)
{
 if (_root.link != page)
 {
    this.gotoAndPlay("s2");
 }
}
on (press) 
{
  fscommand("syllabus","syll");
}

如果有人需要更多解释或更多代码,或者只是整个项目让我知道会发送项目。 我在这里没有解决方案,所以任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

好的问题已解决.. .net 4.0存在一些问题。我发现这是因为我在谷歌搜索我的问题的东西,我不记得我做的搜索,但它返回2结果!其中一个谈话,一些VS家伙和一个用户正在谈论他遇到的问题,这与我的相似。 VS家伙同意确实问题是4.0,他们会纠正这个问题。好像我浪费了很多时间。