有关C#winform的调用外部程序的问题
主程序启动的时候会调用一个外部程序,这个外部程序的界面会显示在主程序界面的前面,我的本意是不希望让用户知道调用了这个程序,大家有什么好方法么?先谢谢各位的指教了!参照了网...
主程序启动的时候会调用一个外部程序,这个外部程序的界面会显示在主程序界面的前面,我的本意是不希望让用户知道调用了这个程序,大家有什么好方法么?先谢谢各位的指教了!参照了网上的一些方法,首先将主程序窗口一直置于最前面,看过几个列子试了下都不行!
由于这个外部程序需要十秒左右的启动时间,所以会导psi.WindowStyle = ProcessWindowStyle.Hidden无法运行最后我只能把这个外部程序改成最小化 psi.WindowStyle = ProcessWindowStyle.Minimized;而使这个外部程序从一开始运行就最小化,而不会遮挡主程序(不让用户知道已启动)!其实我真正的意图是这样子:我的主程序中可以打开这个外部程序,在不关机的情况下,如果这个外部程序被启动过(整个外部程序初始化一遍),那么再次启动这个程序的话仅需要三秒时间而不是原来的十秒! 展开
由于这个外部程序需要十秒左右的启动时间,所以会导psi.WindowStyle = ProcessWindowStyle.Hidden无法运行最后我只能把这个外部程序改成最小化 psi.WindowStyle = ProcessWindowStyle.Minimized;而使这个外部程序从一开始运行就最小化,而不会遮挡主程序(不让用户知道已启动)!其实我真正的意图是这样子:我的主程序中可以打开这个外部程序,在不关机的情况下,如果这个外部程序被启动过(整个外部程序初始化一遍),那么再次启动这个程序的话仅需要三秒时间而不是原来的十秒! 展开
3个回答
展开全部
以隐藏方式启动这个外部程序就行了,比如
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "NOTEPAD.EXE";
psi.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(psi);
更多追问追答
追问
首先真心感谢你的回答。其实之前我也是用这种方法的,但是可能是我自身的问题,而使这段代码无法执行,以下有几个疑惑点;首先是外部程序EXE的路径问题,你把笔记本程序换成QQ。exe一样能运行么?虽然这个外部程序是装在主程序目录中的,但是你怎么知道用户会把这个主程序装在那个盘中?因此这代码第二句就一直无法执行,后面的就更无从说起了!
追答
你当然必须知道这个exe所在位置,有两种,一种是绝对路径,也就是说比如你明确知道它是c:\sample\1.exe这类,或者是相对的,也就是相对于你的主程序的exe所在位置,比如是exe所在目录的sample下,那可能就是Application.StartupPath+@"\sample\1.exe",如果说你根本就不知道这个exe在哪(而且这个exe也不会在注册表中记录位置),那就只能用遍历文件夹的方式来查找这个文件的位置了。
展开全部
最小化外部程序呢
追问
问题是如何在其一出现就能使其最小化?
追答
ProcessStartInfo psi = new ProcessStartInfo();psi.FileName = "NOTEPAD.EXE";psi.WindowStyle = ProcessWindowStyle.Hidden;Process.Start(psi);
这个路径应该是你自己配置的吧,不然怎么知道执行那个程序呢,还有你不想卡住就用多线程
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你所说的【其他程序】也是你编写的话,在【其他程序】中引用该winform程序所属的【项目】,这样就可以在【其他程序】中使用你这个winform程序的窗体类了,注意把你想共享的窗体类的访问级别设为public
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询