用ShellExecuteEx打开了一个文件,如何获取窗口句柄?
比如我用ShellExecuteEx打开一个mp3文件,这样就会自动调用关联程序播放此mp3,请问如何获取此关联程序的主窗口的句柄?
[解决办法]
ShellExecute() 会返回 HINSTANCE,根据 HINSTANCE 去查找 Process
用 FindWindow 查找顶层窗口,再判断是否隶属于这个 Process,至于所谓主窗口还是子窗口,则属于逻辑上的问题,所以不好判断。
[解决办法]
ShellExecuteEx打开文件后的hProcess成员是一个进程句柄,等于使用OpenProcess后返回的句柄一样.
通过这个句柄得到PID,可以调用一个XP SP1新增的函数GetProcessId来完成.
声明:
Private Declare Function GetProcessId Lib "kernel32" (ByVal hProcess As Long) As Long