FindWindowEX的一個(gè)應(yīng)用實(shí)例 選擇自
SafeF8 的 Blog
關(guān)鍵字 FindWindowEX的一個(gè)應(yīng)用實(shí)例
出處
函數(shù)功能:該函數(shù)獲得一個(gè)窗口的句柄,該窗口的類名和窗口名與給定的字符串相匹配。這個(gè)函數(shù)查找子窗口,從排在給定的子窗口后面的下一個(gè)子窗口開(kāi)始。在查找時(shí)不區(qū)分大小寫(xiě)。
函數(shù)原型:HWND FindWindowEx(HWND hwndParent,HWND hwndChildAfter,LPCTSTR lpszClass,LPCTSTR lpszWindow);
參數(shù);
hwndParent:要查找子窗口的父窗口句柄。
如果hwnjParent為NULL,則函數(shù)以桌面窗口為父窗口,查找桌面窗口的所有子窗口。
Windows NT5.0 and later:如果hwndParent是HWND_MESSAGE,函數(shù)僅查找所有消息窗口。
hwndChildAfter :子窗口句柄。查找從在Z序中的下一個(gè)子窗口開(kāi)始。子窗口必須為hwndPareRt窗口的直接子窗口而非后代窗口。如果HwndChildAfter為NULL,查找從hwndParent的第一個(gè)子窗口開(kāi)始。如果hwndParent 和 hwndChildAfter同時(shí)為NULL,則函數(shù)查找所有的頂層窗口及消息窗口。
lpszClass:指向一個(gè)指定了類名的空結(jié)束字符串,或一個(gè)標(biāo)識(shí)類名字符串的成員的指針。如果該參數(shù)為一個(gè)成員,則它必須為前次調(diào)用theGlobaIAddAtom函數(shù)產(chǎn)生的全局成員。該成員為16位,必須位于lpClassName的低16位,高位必須為0。
lpszWindow:指向一個(gè)指定了窗口名(窗口標(biāo)題)的空結(jié)束字符串。如果該參數(shù)為 NULL,則為所有窗口全匹配。返回值:如果函數(shù)成功,返回值為具有指定類名和窗口名的窗口句柄。如果函數(shù)失敗,返回值為NULL。
若想獲得更多錯(cuò)誤信息,請(qǐng)調(diào)用GetLastError函數(shù)。
速查 NT:4.0對(duì)以上版本;Windows:95以上版本;Windows CE:不支持;頭文件:winuser.h;庫(kù)文件:user32.lib;Unicode:在Windows NT上實(shí)現(xiàn)為Unicode和ANSI兩種版本。
unit unitWinExe;
interface
uses
Windows,Messages,Dialogs;
implementation
var
fHwnd,cHwnd:THandle;
cmdLine:string;
begin
cmdLine := ‘C:\Program Files\Huawei-3Com\H3C 802.1X 客戶端\Dot1XClient.exe‘;
WinExec(PChar(cmdLine),SW_HIDE) ;
fHwnd:=FindWindow(‘#32770‘,nil); //查找到窗口#32770,’#32770‘用Spy++查出來(lái)的。
if fHwnd>0 then
begin
cHwnd:=FindWindowEx(fHwnd,0,nil,‘連接‘); //查找#32770的子窗口‘連接‘
if cHwnd>0 then PostMessage(cHwnd,WM_KEYDOWN,VK_RETURN ,0) ; //按回車鍵
end;
end.