200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 获取窗口句柄 按键精灵获取窗口句柄

获取窗口句柄 按键精灵获取窗口句柄

时间:2020-05-19 18:29:32

相关推荐

获取窗口句柄 按键精灵获取窗口句柄

1、首先,确定要获取窗口句柄的窗口,分为两种:窗口标题和窗口句柄。

2、如果知道窗口标题,可以通过FindWindow API来获取窗口句柄:HWND hWnd = ::FindWindow(NULL, “窗口标题”);

3、如果是通过窗口句柄获取窗口句柄,可以使用GetParent API或者GetWindow API来进行获取:HWND hWnd = ::GetParent(hWnd1);

4、如果要获取某一特定窗口的句柄,可以使用EnumWindows API 来进行遍历获取:

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)

{

EnumWindowsParm* pEnumWindowsParm = (EnumWindowsParm*)( lParam );

TCHAR szWindowTile[ 256 ];

::GetWindowText( hwnd, szWindowTile, 256 );

//比较窗口标题,如果一致,则设置传入 pEnumWindowsParm 的句柄为 hwnd,

//这样便可以在外部获得该窗口标题的句柄

if ( 0 == _tcsnicmp( szWindowTile, pEnumWindowsParm->WindowName, _tcslen( pEnumWindowsParm->WindowName ) ) )

{

pEnumWindowsParm->hWnd = hwnd;

return FALSE;

}

return TRUE;

};

5、调用系统消息,激活窗口:::SendMessage ( hWnd, WM_ACTIVATE, WA_ACTIVE, 0 );

6、将窗口移动到视窗:::SetWindowPos( hWnd, HWND_TOPMOST, 0, 0, width, height, SWP_NOMOVE | SWP_NOSIZE);

7、获取窗口句柄的最后一步是检测校验结果,如果结果不合法,说明句柄获取失败,重壮获取窗口句柄。

1.根据窗口名称、窗口类名及其父窗口等条件查找窗口:系统提供了FindWindow 函数,可以确定窗口的句柄,该函数的原型是:HWND Find Window (LPCTSTR lpClassName,LPCTSTR lpWindowName); LPClassName 参数是窗口类名,lpWindowName参数是窗口的标题名称。根据这两个 参数可以确定一个唯一的窗口句柄 HWND。

2.子窗口句柄:除了根据窗口名称查找窗口以外,还可以使用GetWindow()函数查找窗口,它可以查找给定父窗口的子窗口,原型为:HWND GetWindow (HWND hWnd,UINT uCmd); 第一个参数 hWnd 是指定的父窗口的句柄,第二个参数 uCmd 指示着要检索的子窗口的类型,包括GW_CHILD、GW_HWNDFIRST等。

3.枚举窗口:有一种更有效的查找窗口句柄的方法,对于桌面上的所有窗口,它可以一次枚举,可以使用EnumWindows()函数来枚举桌面上所有的顶级窗口,原型:BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam);第一个参数lpEnumFunc 指定一个用户定义的回调函数,它被系统调用来处理每个检索到的窗口;参数 lParam 指定一个指定值,就是给回调函数定义参数时使用。

4.其它:还有一系列其它用于查找窗口的API函数,比如GetWindowText()、GetWindowTextLength()、GetClassName等,只要有一个或几个条件只是要符合就可以查找出窗口的句柄。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。