有关C#winform的调用外部程序的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有关C#winform的调用外部程序的问题相关的知识,希望对你有一定的参考价值。
主程序启动的时候会调用一个外部程序,这个外部程序的界面会显示在主程序界面的前面,我的本意是不希望让用户知道调用了这个程序,大家有什么好方法么?先谢谢各位的指教了!参照了网上的一些方法,首先将主程序窗口一直置于最前面,看过几个列子试了下都不行!
由于这个外部程序需要十秒左右的启动时间,所以会导psi.WindowStyle = ProcessWindowStyle.Hidden无法运行最后我只能把这个外部程序改成最小化 psi.WindowStyle = ProcessWindowStyle.Minimized;而使这个外部程序从一开始运行就最小化,而不会遮挡主程序(不让用户知道已启动)!其实我真正的意图是这样子:我的主程序中可以打开这个外部程序,在不关机的情况下,如果这个外部程序被启动过(整个外部程序初始化一遍),那么再次启动这个程序的话仅需要三秒时间而不是原来的十秒!
以隐藏方式启动这个外部程序就行了,比如
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也不会在注册表中记录位置),那就只能用遍历文件夹的方式来查找这个文件的位置了。
追问确实是,只要有相对路径就行了。不过最关键的是第三句代码效果出不来!这是最郁闷的地方,因为经过调试确实是psi.WindowStyle=hidden;可是程序依然弹出来,想不明白为什么会这样,大哥,你还有其他什么办法么?
参考技术A 最小化外部程序呢追问问题是如何在其一出现就能使其最小化?
追答ProcessStartInfo psi = new ProcessStartInfo();psi.FileName = "NOTEPAD.EXE";psi.WindowStyle = ProcessWindowStyle.Hidden;Process.Start(psi);
这个路径应该是你自己配置的吧,不然怎么知道执行那个程序呢,还有你不想卡住就用多线程
winform process.start() 调用外部EXE引用程序, 如何实现用户登录
string filename = @"C:\Program Files (x86)\PLSQL Developer\plsqldev.exe";
System.Diagnostics.Process p = new System.Diagnostics.Process();
//设定程序名
p.StartInfo.FileName = filename;
p.StartInfo.UserName = "dlias";
System.Security.SecureString a = new System.Security.SecureString();
a.AppendChar('d');
a.AppendChar('l');
a.AppendChar('i');
a.AppendChar('a');
a.AppendChar('s');
p.StartInfo.Password = a;
p.StartInfo.UseShellExecute = false;
p.Start();
进程开始后,提示用户名密码不对,具体该怎么写啊
System.Diagnostics.Process.Start(e.LinkText);
或
System.Diagnostics.Process.Start("IExplore.exe", e.LinkText); 参考技术A
这个有帮助吗?
以上是关于有关C#winform的调用外部程序的问题的主要内容,如果未能解决你的问题,请参考以下文章
C#winform调用外部自己写的一个控制台程序,每次都是一闪而过,根本不执行代码。控制台args[0]是传入参数
winform process.start() 调用外部EXE引用程序, 如何实现用户登录
外部修改C#Winform程序配置文件后Winform程序通过ConfigurationManager.AppSettings.Get方法读取没有变化