我想从我的C ++程序远程执行另一个应用程序。 到目前为止,我与CreateProcess(…)函数一起玩,它工作得很好。
然而,问题是我需要其他程序的完整path,但我不知道它的目录。 所以我想要的是我只需要input另一个程序的名字,比如当你在运行中键入“cmd”或者“winword”,它就会打开相应的程序。
在此先感谢,Russo
通过dll边界传递对STL向量的引用
构build一个windows应用程序瓦特/embedded式浏览器和JavaScript\’钩\’
Netbeans发布模式C ++速度是Visual Studio 2012的两倍?
在编译的ROOT(CERN)应用程序中将TCanvas绘制到屏幕上
谷歌协议缓冲区在windows中使用MinGW
如何隐藏MahApps.Metro窗口中的closuresbutton?
Internet Explorer BHO,写入registry和pipe理员权限
如何找出在C linux中的Hdpath
在Ubuntu上安装C ++库
linux系统调用表或汇编语言的cheetsheet
如果你使用这样的CreateProcess:
CreateProcessA( \”winword.exe\”,…. );
那么PATH变量将不会被使用。 你需要使用第二个参数:
CreateProcessA( NulL,\”winword.exe\”,…. );
有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/ms682425%28VS.85%29.aspx 。
您正在寻找ShellExecute() 。 如果你传递一个合适的URL,就像运行菜单一样,这甚至会起作用。
可以从“开始” – >“运行”运行的程序的目录被添加到PATH变量中。 您可以将程序所在的文件夹添加到PATH,然后使用CreateProcess()。 但是,你说你不知道目录,所以你可能不能这样做。
你知道一个部分路径吗? 例如,你知道你的exe永远在C: something something 或者这个路径的子文件夹吗? 如果是这样,请查找FindFirst()和FindNext()以列出该目录中的所有文件并搜索您的exe文件,然后在找到您的exe文件时使用CreateProcess()。
http://msdn.microsoft.com/en-us/library/aa365200%28VS.85%29.aspx显示如何列出目录中的文件。 你将不得不修改它以搜索子目录(例如,做一个递归函数)。
以任何方式启动程序并指望PATH被认为是不安全的编码。 系统路径可能会受到不正确安全的位置(如网络驱动器)的污染。 启动应用程序的最佳方法是从正确的位置启动可执行文件,并将CWD设置为安装的可执行文件的位置。 否则,你可能会启动恶意代码。
最有可能来自这里的信息的一些组合将有助于正确地获取位置: 通过注册表检测已安装的程序
格雷格
总结
以上是内存溢出为你收集整理的用C ++执行另一个程序全部内容,希望文章能够帮你解决用C ++执行另一个程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容