Process.Start无法启动ShellExecute

之前写了一个MFC程序,放了个按钮,点按钮就调用ShellExecute打开某个程序A。现在又写了个winform程序,用Process.Start调用之前的MFC程序来... 之前写了一个MFC程序,放了个按钮,点按钮就调用ShellExecute打开某个程序A。
现在又写了个winform程序,用Process.Start调用之前的MFC程序来打开程序A。
winform可以顺利打开MFC程序,但是打开后我再点击MFC的按钮,就无法打开ShellExecute指向的程序A了。
这个肿么解决啊?
直接点击运行MFC程序,是可以通过ShellExecute打开程序A的。
用Process.Start打开MFC程序, 就打不开程序A了。

我的目的其实是想通过给定程序路径,通过winform打开该程序。
不知道除了Process.Start还有没有其它方法?
用ShellExecute也会出现上述问题。

Process p = new Process();
p.StartInfo.FileName = "你想要打开的EXE的绝对路径";
p.StartInfo.LoadUserProfile = true;
p.StartInfo.WorkingDirectory = "EXE文件所在的文件夹";
p.Start();
通过这个就成功了,主要是设置了WorkingDirectory ,因为我的MFC中用的是相对路径,之前没指定WorkingDirectory ,就导致MFC打不开指定程序。

刚才百度Hi通知我有新回答,那个回答貌似一针见血指出了我的ShellExecute是否用的相对路径。
可是我在网页上看不到你的回答啊?
展开
 我来答
latentguling
2012-11-24 · TA获得超过326个赞
知道小有建树答主
回答量:636
采纳率:0%
帮助的人:531万
展开全部
ShellExecute 是系统的 运行 命令 一样
相对的路径仅针对 运行 中这些,比如系统位置的 cmd.exe
而 Process.Start 也是一样的,
所以不是什么相对,绝对的问题。
而是取决于你的目标程序放在哪里,如果你把你的程序复制到system32
那么你可以直接用程序的文件名 比如 abc.exe
但是你在别的目录,就必须是绝对的路径,比如是 d:\\test\\abc.exe
微测检测5.10
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇... 点击进入详情页
本回答由微测检测5.10提供
百百mp3
2012-11-23 · TA获得超过855个赞
知道小有建树答主
回答量:901
采纳率:90%
帮助的人:553万
展开全部
Process.Start是将参数提交到Windows等Windows执行所指定的程序,完全不关.net的事。你怎么写的Process.Start?可能在Process.Start里传错参数了...

ps:不如用C#的程序代替C++的ShellExecute...
追问
System.Diagnostics.Process.Start(filePath);这个是写在winform中的,只传了MFC程序路径这个参数。
ShellExecute则是写在MFC程序中的,目的是打开最终的一个程序。
我首先要在winform中启动MFC的程序(用的Process.Start),再通过MFC的程序打开最终的一个程序(用的ShellExecute)。
MFC的程序是已存在,无法更改的,而且必须要先打开这个MFC程序,不能通过winform直接打开最终的程序。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式