EnumWindows遍歷所有頂層窗口


EnumWindows 的功能是遍歷所有頂層窗口

function EnumWindows(
lpEnumFunc: TFNWndEnumProc; {回調函數指針}
lParam: LPARAM {給回調函數的參數, 它對應回調函數的第二個參數}
): BOOL; stdcall; //成功與否, 其實是返回了回調函數的返回值

EnumWindows 專用的回調函數的格式:

function EnumWindowsProc(
hwnd: HWND; {找到的窗口句柄}
lParam: LPARAM {EnumWindows 傳給的參數; 因為它是指針, 可傳入, 但一般用作傳出數據}
): Boolean; stdcall; {函數返回 False 時, 調用它的 EnumWindows 將停止遍歷並返回 False}

使用的時候要搭配在一起使用,先要聲明EnumWindowsProc,因為EnumWindows中的第一個參數就是@EnumWindowsProc


procedure TForm1.Button5Click(Sender: TObject);
begin
Memo1.Clear;
EnumWindows(@EnumWindowsProc_2, 0);{枚舉所有的窗口}
end;


function EnumWindowsProc_2(hwnd: HWND; lParam: LPARAM): Boolean; stdcall;
var
buf: array[Byte] of Char;
begin
GetWindowText(hwnd, buf, SizeOf(buf));{得到窗口的標題}
if buf <> '' then Form1.Memo1.Lines.Add(buf);
Result := True;
end;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM