首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

用ShellExecuteEx打开了一个文件,怎么获取窗口句柄

2012-01-23 
用ShellExecuteEx打开了一个文件,如何获取窗口句柄?比如我用ShellExecuteEx打开一个mp3文件,这样就会自动

用ShellExecuteEx打开了一个文件,如何获取窗口句柄?
比如我用ShellExecuteEx打开一个mp3文件,这样就会自动调用关联程序播放此mp3,请问如何获取此关联程序的主窗口的句柄?

[解决办法]
ShellExecute() 会返回 HINSTANCE,根据 HINSTANCE 去查找 Process

用 FindWindow 查找顶层窗口,再判断是否隶属于这个 Process,至于所谓主窗口还是子窗口,则属于逻辑上的问题,所以不好判断。
[解决办法]
ShellExecuteEx打开文件后的hProcess成员是一个进程句柄,等于使用OpenProcess后返回的句柄一样.

通过这个句柄得到PID,可以调用一个XP SP1新增的函数GetProcessId来完成.

声明:

VB code
Private Declare Function GetProcessId Lib "kernel32" (ByVal hProcess As Long) As Long 

热点排行