窗口句柄 小知识
?
1?FindWindow
HWND WINAPI FindWindow(_In_opt_??LPCTSTR lpClassName,_In_opt_??LPCTSTR lpWindowName ); 該函數通過創建窗口時的類名和窗口名查找窗口并返回該窗口的句柄,函數不會搜索子窗口。該函數區分大小寫。參數
lpClassName?[in, optional]
Type:?LPCTSTR
類名和窗口名是在先前調用RegisterClass?or?RegisterClassEx時創建的
如果lpClassName為NULL,他會尋找所有和lpWindowName參數匹配的窗口
lpWindowName?[in, optional]
Type:?LPCTSTR
窗口的名字也是窗口的title. 如果該參數為NULL,所有窗口名字都是匹配的.
返回值
Type:?HWND
如果函數調用成功,返回指向該窗口的句柄; 否則返回NULL。得到更多的錯誤信息調用GetLastError
?
示例:
????char?className[]="notepad";HWND?hWnd=::FindWindow(className,NULL);auto hwnd = FindWindow(L"IPTip_Main_Window", NULL);?
注意
如果lpWindowName?非空, FindWindow?會調用GetWindowText?函數去得到窗口的名字作為比較
?
?
2 EnumChildWindows
?
BOOL CALLBACK EnumChildProc(HWND hWnd,LPARAM lParam) {char temp1[256],temp2[256];::GetWindowText(hWnd,temp1,255);wsprintf(temp2,"hwnd:%x text: %s",hWnd,temp1);MessageBox(NULL,temp2,"cwnd",MB_OK);return true; }::EnumChildWindows(hWnd,EnumChildProc,0);3?GetParent? ? ? ? ?獲得指定窗口父窗口的句柄
?HWND GetParent(HWND hWnd);
4?GetTopWindow??獲得指定窗口的第一個子窗口的句柄
GetTopWindow函數檢查與特定父窗口相聯的子窗口z序,并返回在z序頂部的子窗口的句柄。
HWND GetTopWindow(HWND hWnd);
hWnd:被查序的父窗口的句柄。如果該參數為NULL,函數返回Z序頂部的窗口句柄。
返回值;如果函數成功,返回值為在Z序頂部的子窗口句柄。如果指定的窗口無子窗口,返回值為NULL。
HWND GetWindowHandleByPID(DWORD dwProcessID) {HWND h = GetTopWindow(0 );while ( h ){DWORD pid = 0;DWORD dwTheardId = GetWindowThreadProcessId( h,&pid);if (dwTheardId != 0){if ( pid == dwProcessID/*your process id*/ ){// here h is the handle to the windowreturn h;}}h = GetNextWindow( h , GW_HWNDNEXT);}return NULL; }5 GetWindow?
HWND GetWindow(HWND hWnd,UINT nCmd)
hWnd:窗口句柄。這個函數要返回的窗口句柄是依據nCmd參數值相對于hWnd參數的關系
nCmd:說明指定窗口與要獲得句柄的窗口之間的關系。該參數值可以是下列之一:
GW_CHILD(&H5):如果指定窗口是父窗口,則獲得的是在Tab序頂端的子窗口的句柄,否則為NULL。函數僅檢查指定父窗口的子窗口,不檢查繼承窗口。
更多信息?可以搜索網絡
?
6?GetNextWindow
HWND GetNextWindow(HWND hWnd,UNIT wCmd)
wCmd:指明窗口返回的是前一窗口的句柄還是后一窗口的句柄。該參數可以是下列兩個值之一:
GW_HWNDNEXT:返回在給定窗口的下面窗口的句柄。
GW_HWNDPREV:返回在給定窗口的上面窗口的句柄。
GW_HWNDFIRST = 0;
GW_HWNDLAST = 1;
GW_HWNDNEXT = 2;
GW_HWNDPREV = 3;
GW_OWNER = 4;
GW_CHILD = 5;
?
7?獲得窗口類名
WCHAR className[256];GetClassName(hWnd, className, sizeof(className));if (wcscmp(className, L"ChatroomForm") == 0)continue;?
其它與句柄有關的還有:
GetLastActivePopup 針對指定的窗口,取回上一個活動的彈出式窗口的句柄
SetParent 改變任何窗口的父窗口。
BringWindowToTop 使指定的窗口進入可見窗口列表的頂部,如它被部分或全部隱藏,則令其全部可見。同時,該窗口成為當前活動窗口。只有從前臺線程調用時,才生效。
ChildWindowFromPoint 在規定的坐標取得某子窗口的句柄(如果有的話),這兒的坐標是指相對于父窗口的客戶區坐標。
ChildWindowFromPointEx 與ChildWindowFromPoint相同,功能更強。
ClientToScreen 判斷指定點在窗口客戶區內的屏幕坐標。
GetClientRect 獲得對窗口客戶區進行表述的一個矩形(RECT)。這是以像素為單位判斷客戶區大小的一個簡便的方法。
GetWindowPlacement 獲得指定窗口的一個WINDOWPLACEMENT結構。該結構說明了窗口的狀態。
GetWindowRect 用于獲得一個矩形(RECT)結構,它描述了窗體在屏幕坐標系統中的位置。
MapWindowPoints 對某窗口客戶區坐標內的一個或多個點進行轉換,用另一窗口的客戶區坐標表示。
MoveWindow 移動指定窗口的位置,并能改變它的大小。
OpenIcon 將一個最小化窗口恢復為原始狀態。
ScreenToClient 針對屏幕內一個指定的點,用某個特定窗口內的客戶區坐標表示它。
SetWindowsPos 更改窗口的位置和大小,并能修改它在內部窗口列表內的位置(這個列表起著控制窗口先是順序)。
SetWindowPlacement 在一個WINDOWPLACEMENT結構的基礎上,設置某窗口的特征。該結構描述了窗口的狀態,以及它在最小化、最大化或正常顯示時的位置。
WindowFromPoint 根據屏幕上一個指定的點,判斷哪個窗口正位于它的下面。
GetClassInfo 取得指定窗口的類信息結構
GetClassInfoEx 效果類似于GetClassInfo,但增加了一些功能
GetClassLong,GetClassWord 用于獲取窗口類信息
SetClassLong,SetClassWord 用于設置窗口類信息
GetClassName 獲取窗口類名
GetDesktopWindow 獲取整個桌面(屏幕)的窗口句柄
GetWindowLong,GetWindowWord 獲取與窗口有關的信息
SetWindowLong,SetWindowWord 設置與窗口有關的信息
GetWindowText 獲得窗口文本。它的效果大致等價于窗體或控件的Text屬性
GetWindowTextLength 獲得窗口文本的長度,用字符數表示。
IsChild 判斷某窗口是否為另一窗口的子窗口或從屬窗口。
IsIconic 判斷某窗口是否處于最小化狀態
IsWindow 判斷指定的句柄是否為窗口句柄。
IsWindowEnabled 判斷指定的窗口是否處于活動狀態。
IsWindowVisible 判斷某窗口是否可見。
IsZoomed 判斷窗口是否處于最大化狀態。
SetWindowText 設置窗口文本。大致等價于窗體或控件的Text屬性。
AnyPopup 判斷是否存在可見的彈出式窗口
CascadeWindows 令窗口在一個父窗口內層疊顯示
CloseWindow 對指定的窗口進行最小化處理(如果它是個釘級窗口)對彈出式及子窗口無效
DestroyWindow 清除指定的窗口以及下屬所有子窗口與包容窗口
DrawAnimatedRects 獲得窗口打開或關閉的動畫效果
EnableWindow 激活或屏蔽(禁用)指定窗口
FlashWindow 令指定窗口的標題閃爍顯示
GetUpdateRect 判斷需要更新的那個窗口的位置
GetWindowContextHelpId 取得與窗口關聯在一起的幫助場景
InvalidateRect 指定窗口內需要更新的全部或部分客戶區
IsWindowUnicode 判斷一個窗口是否期望文本消息采用Unicode格式
LockWindowUpdate 允許或禁止描繪指定的窗口
RedrawWindow 一個功能強大的函數,用于控制全部或部分窗口重畫
ScrollWindow,ScrollWindowEx 滾動顯示窗口的全部或部分客戶區
SetWindowContextHelpId 設置與窗口關聯在一起的幫助場景
ShowOwnedPopups??? 隱藏或顯示從屬于指定窗口的所有保容彈出窗口
ShowWindow????????????? 用于設置窗口的狀態,其中包括窗口的隱藏、顯示、最小化、最大化以及激活等
ShowWindowAsync???? 類似于ShowWindow,增加了對其他進程內的窗口進行操作的能力
TileWindows??????????????? 令窗口在一個父窗口內平鋪顯示
UpdateWindow?????????? 立即更新窗口內需要更新的任何部分
ValidateRect??????????????? 指出全部或部分矩形已經更新,毋需再更新
?
?
參考自https://www.cnblogs.com/feiyucq/archive/2009/07/28/1533058.html
總結
- 上一篇: lycos搜索引擎_Lycos中国推出全
- 下一篇: 音视频处理入门基础知识(一)