Advertisement
TrunghieuTH10

Window Finder

Oct 9th, 2015
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 8.18 KB | None | 0 0
  1. #include <GUIConstants.au3>
  2. #include <StaticConstants.au3>
  3. #include <WindowsConstants.au3>
  4.  
  5. ;===============================================================================
  6. ;
  7. ; Description:    Window Finder
  8. ; Author(s):        Dmitry Yudin (Lazycat)
  9. ; Date:          26.10.2007
  10. ; Notes:            Used for learning:
  11. ;                  [url]http://www.codeproject.com/dialog/windowfinder.asp[/url]
  12. ;===============================================================================
  13.  
  14. ; Initializing resources
  15. Global $CURSOR_TARGET = WriteResource( _
  16. "0x000002000100202000000F001000300100001600000028000000200000004000000001000100000000008000" & _
  17. "00000000000000000000020000000200000000000000FFFFFF0000000000000000000000000000000000000000" & _
  18. "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" & _
  19. "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" & _
  20. "00000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" & _
  21. "FFFFFFF83FFFFFE6CFFFFFD837FFFFBEFBFFFF783DFFFF7EFDFFFEAC6AFFFEABAAFFFE0280FFFEABAAFFFEAC6A" & _
  22. "FFFF7EFDFFFF783DFFFFBEFBFFFFD837FFFFE6CFFFFFF83FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" & _
  23. "FFFFFFFFFFFFFFFFFFFFFFFF")
  24. Global $ICON_TARGET_FULL = WriteResource( _
  25. "0x0000010001002020080000000000E80200001600000028000000200000004000000001000400000000000002" & _
  26. "000000000000000000001000000010000000000000000000800000800000008080008000000080008000808000" & _
  27. "00C0C0C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000000000000000" & _
  28. "00000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFF" & _
  29. "FFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFF00000FFFFFFFFFFFF000FFFFFFFFFF00FF0FF00FFFFFFFFFF000FF" & _
  30. "FFFFFFF0FF00000FF0FFFFFFFFF000FFFFFFFF0FFFFF0FFFFF0FFFFFFFF000FFFFFFF0FFFF00000FFFF0FFFFFF" & _
  31. "F000FFFFFFF0FFFFFF0FFFFFF0FFFFFFF000FFFFFF0F0F0FF000FF0F0F0FFFFFF000FFFFFF0F0F0F0FFF0F0F0F" & _
  32. "0FFFFFF000FFFFFF0000000F0F0000000FFFFFF000FFFFFF0F0F0F0FFF0F0F0F0FFFFFF000FFFFFF0F0F0FF000" & _
  33. "FF0F0F0FFFFFF000FFFFFFF0FFFFFF0FFFFFF0FFFFFFF000FFFFFFF0FFFF00000FFFF0FFFFFFF000FFFFFFFF0F" & _
  34. "FFFF0FFFFF0FFFFFFFF000FFFFFFFFF0FF00000FF0FFFFFFFFF000FFFFFFFFFF00FF0FF00FFFFFFFFFF000FFFF" & _
  35. "FFFFFFFF00000FFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0" & _
  36. "00FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000007770CCCCCCCCCCCCCCCCCCCC" & _
  37. "C07770007070CCCCCCCCCCCCCCCCCCCCC07070007770CCCCCCCCCCCCCCCCCCCCC0777000000000000000000000" & _
  38. "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" & _
  39. "000000000000000000FFFFFFFF8000000080000000800000008000000080000000800000008000000080000000" & _
  40. "800000008000000080000000800000008000000080000000800000008000000080000000800000008000000080" & _
  41. "0000008000000080000000800000008000000080000000800000008000000080000000FFFFFFFFFFFFFFFFFFFF" & _
  42. "FFFF")
  43. Global $ICON_TARGET_EMPTY = WriteResource( _
  44. "0x0000010001002020080000000000E80200001600000028000000200000004000000001000400000000000002" & _
  45. "000000000000000000001000000010000000000000000000800000800000008080008000000080008000808000" & _
  46. "00C0C0C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000000000000000" & _
  47. "00000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFF" & _
  48. "FFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FF" & _
  49. "FFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFF" & _
  50. "F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFF" & _
  51. "FFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFF" & _
  52. "FFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFF" & _
  53. "FFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFF" & _
  54. "FFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0" & _
  55. "00FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000007770CCCCCCCCCCCCCCCCCCCC" & _
  56. "C07770007070CCCCCCCCCCCCCCCCCCCCC07070007770CCCCCCCCCCCCCCCCCCCCC0777000000000000000000000" & _
  57. "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" & _
  58. "000000000000000000FFFFFFFF8000000080000000800000008000000080000000800000008000000080000000" & _
  59. "800000008000000080000000800000008000000080000000800000008000000080000000800000008000000080" & _
  60. "0000008000000080000000800000008000000080000000800000008000000080000000FFFFFFFFFFFFFFFFFFFF" & _
  61. "FFFF")
  62.  
  63. ; Loading cursor from file
  64. $hTargetCursor = DllCall("User32.dll", "int", "LoadCursorFromFile", "str", $CURSOR_TARGET)
  65. $hTargetCursor = $hTargetCursor[0]
  66.  
  67. Global $g_StartSearch = False, $gFoundWindow = 0, $gOldCursor
  68. ;~ Global $WM_MOUSEMOVE = 0x200
  69. ;~ Global $WM_LBUTTONUP = 0x202
  70.  
  71. #Region ### START Koda GUI section ### Form=
  72. $hGUI = GUICreate("Window Finder", 586, 104, -1, -1)
  73. GUICtrlCreateGroup("Target", 80, 0, 497, 65)
  74. GUICtrlCreateLabel("Title:", 101, 18, 27, 17, $SS_RIGHT)
  75. GUICtrlCreateLabel("Handle:", 87, 42, 41, 17, $SS_RIGHT)
  76. $hLabelTitle = GUICtrlCreateLabel("", 133, 18, 436, 17, BitOR($SS_CENTER,$SS_RIGHT,$SS_GRAYFRAME,$SS_WHITEFRAME,$SS_SIMPLE))
  77. $hLabelWnd = GUICtrlCreateLabel("", 133, 42, 100, 17)
  78. GUICtrlCreateLabel("Class:", 240, 42, 32, 17)
  79. $hLabelClass = GUICtrlCreateLabel("", 272, 42, 300, 17, BitOR($SS_CENTER,$SS_RIGHT,$SS_GRAYFRAME,$SS_WHITEFRAME,$SS_SIMPLE))
  80. GUICtrlCreateGroup("", -99, -99, 1, 1)
  81. GUICtrlCreateGroup("", 8, 0, 65, 65)
  82. $hTargetPic = GUICtrlCreateIcon($ICON_TARGET_FULL, 0, 24, 20, 32, 32, BitOR($SS_NOTIFY,$WS_GROUP))
  83. GUICtrlCreateGroup("", -99, -99, 1, 1)
  84. $hOK = GUICtrlCreateButton("Close", 504, 72, 75, 25, 0)
  85. GUISetState(@SW_SHOW)
  86. #EndRegion ### END Koda GUI section ###
  87.  
  88. GUIRegisterMsg ($WM_MOUSEMOVE, "WM_MOUSEMOVE_FUNC")
  89. GUIRegisterMsg ($WM_LBUTTONUP, "WM_LBUTTONUP_FUNC")
  90.  
  91. While 1
  92.     $nMsg = GUIGetMsg()
  93.     Switch $nMsg
  94.         Case $GUI_EVENT_CLOSE, $hOK
  95.             Exit
  96.         Case $hTargetPic
  97.             $g_StartSearch = True
  98.             DllCall("user32.dll", "hwnd", "SetCapture", "hwnd", $hGUI)
  99.             $gOldCursor = DllCall("user32.dll", "int", "SetCursor", "int", $hTargetCursor)
  100.             If not @error Then $gOldCursor = $gOldCursor[0]
  101.             GUICtrlSetImage($hTargetPic, $ICON_TARGET_EMPTY)
  102.     EndSwitch
  103. Wend
  104.  
  105. Func WM_MOUSEMOVE_FUNC($hWnd, $nMsg, $wParam, $lParam)
  106.     If not $g_StartSearch Then Return 1
  107.     Local $mPos = MouseGetPos()
  108.     $hWndUnder = DllCall("user32.dll", "hwnd", "WindowFromPoint", "long", $mPos[0], "long", $mPos[1])
  109.     If not @error Then $hWndUnder = $hWndUnder[0]
  110.     If CheckFoundWindow($hWndUnder) Then
  111.         GUICtrlSetData($hLabelTitle, WinGetTitle($hWndUnder))
  112.         GUICtrlSetData($hLabelWnd, $hWndUnder)
  113.         GUICtrlSetData($hLabelClass, GetWindowClass($hWndUnder))
  114.         $gFoundWindow = $hWndUnder
  115.     EndIf
  116.     Return 1
  117. EndFunc
  118.  
  119. Func WM_LBUTTONUP_FUNC($hWnd, $nMsg, $wParam, $lParam)
  120.     If not $g_StartSearch Then Return 1
  121.     $g_StartSearch = False
  122.     ; Release captured cursor
  123.     DllCall("user32.dll", "int", "ReleaseCapture")
  124.     DllCall("user32.dll", "int", "SetCursor", "int", $gOldCursor)
  125.     GUICtrlSetImage($hTargetPic, $ICON_TARGET_FULL)
  126.     Return 1
  127. EndFunc
  128.  
  129. Func CheckFoundWindow($hFoundWnd)
  130.  If $hFoundWnd = $hGUI Then Return False
  131.  If $hFoundWnd = 0 Then Return False
  132.  If $hFoundWnd = $gFoundWindow Then Return False
  133.  If not WinExists($hFoundWnd) Then Return False
  134.  Local $hTemp = DllCall("user32.dll", "hwnd", "GetParent", "hwnd", $hFoundWnd)
  135.  If not @error and $hTemp[0] = $hGUI Then Return False
  136.  Return True
  137. EndFunc
  138.  
  139. Func GetWindowClass($hWnd)
  140.     $pClassName = DllStructCreate("char[256]")
  141.     DllCall("user32.dll", "int", "GetClassName", "hwnd", $hWnd, "ptr", DllStructGetPtr($pClassName), "int", 255)
  142.     Return DllStructGetData($pClassName, 1)
  143. EndFunc
  144.  
  145. Func WriteResource($sbStringRes)
  146.     Local $sTempFile
  147.     Do
  148.         $sTempFile = @TempDir & "\temp" & Hex(Random(0, 65535), 4)
  149.     Until not FileExists($sTempFile)
  150.     Local $hFile = FileOpen($sTempFile, 2+16)
  151.     FileWrite($hFile, $sbStringRes)
  152.     FileClose($hFile)
  153.     Return $sTempFile
  154. EndFunc
  155.  
  156. Func OnAutoitExit()
  157.     If IsDeclared("CURSOR_TARGET") Then
  158.         FileDelete($ICON_TARGET_FULL)
  159.         FileDelete($ICON_TARGET_EMPTY)
  160.         FileDelete($CURSOR_TARGET)
  161.     EndIf
  162. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement