如何使用ShellExecuteEx启动应用程序的pid(以防app已经运行)

时间:2014-02-27 06:14:07

标签: windows winapi visual-c++ windows-shell shellexecuteex

我希望在双击文件(.doc; .xls)或快捷方式(.LNK)或exe时,以Windows shell的形式启动应用程序。 然后我想获得已启动应用程序的pid和窗口句柄。

目前我正在使用ShellExecuteEx为(File,.lnk或.exe)启动对应的应用程序。 并从ShellExecuteEx返回的句柄中获取pid。 这对于少数应用程序(如AdobeReader,outlook等)不起作用,但是我试图通过获取“之前运行的应用程序列表”来处理,并在调用ShellExecuteEx以获取针对此类情况的新启动的应用程序之后采取差异。

但是,如果某个应用已经在运行(对于已打开的word文档),或者对于带有选项卡式界面的应用(不一定会产生新进程) 当我执行ShellExecuteEx它只是将该应用程序置于顶部,句柄返回为0, 而且我对pids没有任何区别(因为没有产生新的过程)

因此,在这种情况下,我无法获得正在运行的应用程序的pid或窗口句柄。

有人可以建议任何可靠的方法来解决这个问题

提前致谢

0 个答案:

没有答案