小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

EnumWindow 枚舉窗口 .

 doc360sir 2011-10-26

1 EnumWindow 函數(shù)功能:

枚舉所有頂級窗口。函數(shù)調用后,系統(tǒng)為每個頂級窗口調用一次回調函數(shù),參數(shù)為窗口的句柄和一個附加參數(shù)??梢栽诨卣{函數(shù)中用 GetWindowText 函數(shù)得到窗口標題,再用 strstr 等函數(shù)查找關鍵字的方式判斷某窗口的存在。

函數(shù)原型:

BOOL EnumWindows(

    WNDENUMPROC lpEnumFunc, // pointer to callback function

    LPARAM lParam // application-defined value

);

參數(shù)說明:

lpEnumFunc :指向定義的回調函數(shù)。

lParam :指向一個 32 位的,傳遞給回調函數(shù)的值

返回值:

成功非零值,不成功返回零

備注:

不枚舉子窗口,比循環(huán)的用 GetWindow 枚舉要好。

其它窗口函數(shù)還有 FindWindow 、 GetForeGroundWindow 等, FindWindow 利用類名或窗口名獲取窗口句柄, GetForeGroundWindow 返回前臺窗口(用戶當前工作的窗口)。

2 EnumWindow 的回調函數(shù) EnumWindowsProc

回調函數(shù)概念:

Windows 編程中,回調函數(shù)是一種不會被程序中的函數(shù)或過程直接調用,而是由 Windows 操作系統(tǒng)調用的函數(shù)。通過回調函數(shù)中定義的相應參數(shù),允許 Windows 直接與應用程序進行通信。

函數(shù)原型:

BOOL CALLBACK EnumWindowsProc(

    HWND hwnd, // handle to parent window

    LPARAM lParam // application-defined value

   );

參數(shù)說明:

Hwnd :系統(tǒng)傳遞來的頂級窗口句柄。

lParam :附加參數(shù)

    返回值:

繼續(xù)枚舉,返回值虛偽 TRUE ;停止枚舉返回值為 FALSE 。

3 Win32 匯編的 EnumWindow 函數(shù)使用 實例

.386

.model flat,stdcall

option casemap:none

include windows.inc

include user32.inc

includelib user32.lib

include kernel32.inc

includelib kernel32.lib

include   Shlwapi.inc

includelib Shlwapi.lib   ;strstr

            .const

szTitle     db        'ollydbg',0       

szCaption   db        ' 結果 ',0

szFindOD    db        ' 發(fā)現(xiàn)目標窗口 ',0

szText      db        ' 枚舉已結束 , 沒提示發(fā)現(xiàn)目標,則沒有找到目標窗口 ',0

            .code

; 定義回調函數(shù)

_CloseWnd proc uses ebx edi esi,_hWnd,_lParam

         LOCAL   @szBuffer[1024]:BYTE   ; 接收窗口標題

         invoke IsWindowVisible,_hWnd

         .if eax ; 是否是可見的窗口

             invoke GetWindowText,_hWnd,addr @szBuffer,sizeof @szBuffer

             invoke StrStrI,addr @szBuffer,offset szTitle ; 查找標題中有無字符串 , 不帶 I 的大小寫敏感

             .if eax

                invoke   MessageBox,NULL,addr szFindOD,addr szCaption,MB_OK

                 invoke   PostMessage,_hWnd,WM_CLOSE,0,0 ; 關閉目標

             .endif

         .endif

         mov eax,TRUE ; 返回 true 時, EnumWindows 繼續(xù)枚舉下一個窗口, false 退出枚舉 .

         ret

_CloseWnd endp

start:

           invoke   EnumWindows,addr _CloseWnd,NULL

;EnumWindows 調用,系統(tǒng)枚舉所有頂級窗口,為每個窗口調用一次回調函數(shù)

           invoke   MessageBox,NULL,addr szText,addr szCaption,MB_OK

           invoke   ExitProcess,NULL

           end start

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多