2013-08-27 64 views
5

Tôi đang cố gắng loại bỏ các nút thu nhỏ, tối đa hóa và đóng trên tất cả các cửa sổ. Googling xung quanh tôi tìm thấy điều này:Nhận danh sách tất cả các cửa sổ đang mở bằng cách sử dụng AutoIt

$h = WinGetHandle("[CLASS:Notepad]") 

$iOldStyle = _WinAPI_GetWindowLong($h, $GWL_STYLE) 
$iNewStyle = BitXOr($iOldStyle, $WS_SYSMENU) 
_WinAPI_SetWindowLong($h, $GWL_STYLE, $iNewStyle) 
_WinAPI_ShowWindow($h, @SW_SHOW) 

Điều này làm việc tốt, vì vậy bây giờ tôi chỉ cần lặp qua tất cả các cửa sổ với mã này, và tôi đã hoàn tất. Làm cách nào để có danh sách tất cả HWNDs trong hệ thống?

Trả lời

6

Bạn có thể có được một danh sách của tất cả các cửa sổ đang mở sử dụng WinList:

$aWindows = WinList() 
For $i=1 To $aWindows[0][0] 

    ; skip windows without a title 
    If $aWindows[$i][0] = '' Then ContinueLoop 

    ;use the HWND to get the state of the window 
    $iWndState = WinGetState($aWindows[$i][1]) 

    ; here you could filter out the windows you don't want to modify 
    ConsoleWrite($aWindows[$i][0] & ': ') 
    If BitAND($iWndState,1) = 1 Then ConsoleWrite(' exists') 
    If BitAND($iWndState,2) = 2 Then ConsoleWrite(' visible') 
    If BitAND($iWndState,4) = 4 Then ConsoleWrite(' enabled') 
    If BitAND($iWndState,8) = 8 Then ConsoleWrite(' active') 
    If BitAND($iWndState,16) = 16 Then ConsoleWrite(' minimised') 
    If BitAND($iWndState,32) = 32 Then ConsoleWrite(' maximised') 
    ConsoleWrite(@CRLF) 
Next 
+0

hoạt động tốt. cảm ơn! :) –

+1

Nó sẽ rất tử tế nếu người downvoter ẩn danh có thể giải thích lý do cho downvote của mình. Nếu bạn không hiểu câu trả lời, hãy bình luận và tôi sẽ cố gắng giúp bạn. Hay đây chỉ là một xu hướng không? http://fs2.directupload.net/images/150804/4pmpidv8.png – mrt

Các vấn đề liên quan