如题,有一个工具箱主程序,工具箱中嵌入多个子程序,用户只需打开对应程序的按钮就可以了,已经实现
//不存在 Process p = new Process(); p.StartInfo.FileName = Environment.CurrentDirectory + @"\SubroutineList\1\MJRanking_Tool.exe"; //設定程序名 p.StartInfo.Arguments = "123"; p.StartInfo.UseShellExecute = false; //關閉Shell的使用 p.StartInfo.WorkingDirectory = Environment.CurrentDirectory + @"\SubroutineList\1";//关键一步 p.StartInfo.RedirectStandardInput = true; //重定向標準輸入 p.StartInfo.RedirectStandardOutput = true; //重定向標準輸出 p.StartInfo.RedirectStandardError = true; //重定向錯誤輸出 p.StartInfo.CreateNoWindow = true; //設置不顯示窗口 p.Start(); //啟動
现有一需求:子程序只能通过工具箱打开,如果单独从目录中打开子程序则提示无法打开,求实现思路与解决方案
子程序是独立的exe文件吧?怎么不能直接打开呢?不可能呀???可否说清楚一点。
看好了,那是需求,需要完成这个功能
@赶猪上架:
直接检查自己的父窗口就行了嘛。如果父进程不存在,就直接退出。
从工具箱打开程序时,记得关联好父窗口就行了。
@赶猪上架:
看这个文章吧,说得很清楚了。
http://www.fluxbytes.com/csharp/host-a-process-window-inside-your-applications-window/
1、设置一个启动参数
2、主程序开放一个通信端口,子程序启动时去请求确认下
3、子程序验证主程序进程
4、标识。
添加启动参数,在你的子程序中启动时判断启动参数,如果有则启动,如果没有则退出进程。
进程间通讯
每个exe文件都是以Main函数来执行的,可以为Main函数设置参数, 这是常用的方法。