我希望能从我的C++程序中远程执行另一个应用程序。目前我使用了CreateProcess(...)函数并且它完美地运行了。
然而问题在于,我需要另一个程序的完整路径,但我不知道它的目录。因此,我希望只需输入另一个程序的名称,就像在“运行”中输入“cmd”或“winword”一样,它就会打开相应的程序。
提前感谢, Russo
我希望能从我的C++程序中远程执行另一个应用程序。目前我使用了CreateProcess(...)函数并且它完美地运行了。
然而问题在于,我需要另一个程序的完整路径,但我不知道它的目录。因此,我希望只需输入另一个程序的名称,就像在“运行”中输入“cmd”或“winword”一样,它就会打开相应的程序。
提前感谢, Russo
If you are using CreateProcess like this:
CreateProcessA( "winword.exe", .... );
如果未使用PATH变量,则需要使用第二个参数:
CreateProcessA( NULL, "winword.exe", .... );
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显示如何列出目录中的文件。您需要修改它以同时搜索子目录(例如,制作一个递归函数)。
SearchPath()
函数来实现。 - MSalters