有关C#winform的调用外部程序的问题

主程序启动的时候会调用一个外部程序,这个外部程序的界面会显示在主程序界面的前面,我的本意是不希望让用户知道调用了这个程序,大家有什么好方法么?先谢谢各位的指教了!参照了网... 主程序启动的时候会调用一个外部程序,这个外部程序的界面会显示在主程序界面的前面,我的本意是不希望让用户知道调用了这个程序,大家有什么好方法么?先谢谢各位的指教了!参照了网上的一些方法,首先将主程序窗口一直置于最前面,看过几个列子试了下都不行!
由于这个外部程序需要十秒左右的启动时间,所以会导psi.WindowStyle = ProcessWindowStyle.Hidden无法运行最后我只能把这个外部程序改成最小化 psi.WindowStyle = ProcessWindowStyle.Minimized;而使这个外部程序从一开始运行就最小化,而不会遮挡主程序(不让用户知道已启动)!其实我真正的意图是这样子:我的主程序中可以打开这个外部程序,在不关机的情况下,如果这个外部程序被启动过(整个外部程序初始化一遍),那么再次启动这个程序的话仅需要三秒时间而不是原来的十秒!
展开
 我来答
syht2000
高粉答主

2013-08-20 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部

以隐藏方式启动这个外部程序就行了,比如

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也不会在注册表中记录位置),那就只能用遍历文件夹的方式来查找这个文件的位置了。
沈红伟
2013-08-20 · 超过33用户采纳过TA的回答
知道答主
回答量:184
采纳率:100%
帮助的人:36.4万
展开全部
最小化外部程序呢
追问
问题是如何在其一出现就能使其最小化?
追答
ProcessStartInfo psi = new ProcessStartInfo();psi.FileName = "NOTEPAD.EXE";psi.WindowStyle = ProcessWindowStyle.Hidden;Process.Start(psi);
这个路径应该是你自己配置的吧,不然怎么知道执行那个程序呢,还有你不想卡住就用多线程
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
但奕莱阔
2020-01-02 · TA获得超过3626个赞
知道大有可为答主
回答量:3028
采纳率:31%
帮助的人:221万
展开全部
你所说的【其他程序】也是你编写的话,在【其他程序】中引用该winform程序所属的【项目】,这样就可以在【其他程序】中使用你这个winform程序的窗体类了,注意把你想共享的窗体类的访问级别设为public
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式