IQ绿色电脑总站 IQ绿色下载站 IQ电脑图片 IQ丁香鱼电脑站
网站首页 | 网络编程 | 站长学院 | 网页制作 | 图形图像 | 操作系统 | 冲浪宝典 | 软件教程 | 网络办公 | 邮件系统 | 网络安全 | 电脑故障 | 访客留言 | 内容搜索
>首页 -> 网络编程 -> C#/CSHARP教程 -> c#应用

TOP

实现多个可执行文件的合并和执行
[ ]
1 引言

这种情况,常常出现在我们的变态需求里,因为客户常常是“无理”的。他们不希望见到过多的文件,尤其是过多的可执行文件,对于很多陌生的计算机用户来说,仅仅点击一次就可以完成所有的事情。

你看,我们的老王主任(虚拟人物,如有雷同,纯属虚构)不满意项目组提交的服务启动程序了,因为原来的实现并没有考虑太多的用户体验,我们要求客户首先设置必要的参数和启动条件,然后再启动专门的服务程序。就是这两次简单的操作,老王主任火冒三丈,因为他总是点错了顺序倒置程序加载问题,从而顺便迁怒到我们辛苦做了10个月的系统上。“你的东西太烂了,连打开就都这么费劲”,我读懂了老王的潜台词,然后默默的回去解决这个不是问题的问题。

对需求来说,客户永远是对的。

2 实现的步骤

2.1 基本步骤

  • 准备好外部加载的可执行文件(Anytao_Insidenet_QuickLink.exe),新建项目
  • 将可执行文件加载到资源文件
    • 新建资源文件(ExeRes.resx)

    • 将可执行文件加载到资源文件:打开资源文件ExeRes.resx,选择Add Existing File,并加载准备好的可执行程序

    • 访问资源文件:.NET中资源文件的访问非常方便,Visual Studio会自动生成对于资源文件的逻辑代码,类似于实体化处理。例如打开ExeRes.Designer.cs可以看到(省略部分代码)
    internal class ExeRes {
        
        internal ExeRes() {
        }
        
        internal static byte[] Anytao_Insidenet_QuickLink {
            get {
                object obj = ResourceManager.GetObject("Anytao_Insidenet_QuickLink", resourceCulture);
                return ((byte[])(obj));
            }
        }
    }

因此,对于资源文件的访问可以是

            byte[] bytesExe = ExeRes.Anytao_Insidenet_QuickLink;

由此,就可以成功的将一个可执行文件加载到资源文件,并通过静态属性来访问。

  • 应用文件流还原可执行文件

应用文件流还原可执行文件,是个简单的操作,不必做过多的交代:

        // Copyright   : www.anytao.com
        // Author      : Anytao,http://www.anytao.com
        // Release     : 2008/05/24 1.0
        public void GetExeFromBytes(byte[] buffer, string fileName)
        {
            FileStream fs = new FileStream(fileName, FileMode.Create);
            BinaryWriter writer = new BinaryWriter(fs);
 
            try
            {
                writer.Write(buffer, 0, buffer.Length);
            }
            catch (IOException ex)
            {
                Trace.WriteLine(ex.Message);
            }
            finally
            {
                writer.Close();
                fs.Close();
            }
        }

可以通过buffer来指定要处理的资源文件,通过fileName来指定要生成的目标路径,一个活生生的可执行文件就这样呱呱落地了。

  • 在程序中打开外部可执行文件

对于释放的可执行文件,通过应该程序来打开通常是以Process组件来完成的,例如:

        // Copyright   : www.anytao.com
        // Author      : Anytao,http://www.anytao.com
        // Release     : 2008/05/24 1.0
        public void RunExe(string fileName)
        {
            Process myProc = new Process();
            myProc.StartInfo.FileName = fileName;
            myProc.Start();
            myProc.WaitForExit();
        }
<< < 1 2 > >> 1/2
[上一篇]C#进行Visio二次开发之图纸设备信.. [下一篇]没有了

评论

称  呼:
内  容:

精彩文章地带

相关栏目

最新文章

热门文章

推荐文章