Malkey Posted July 10, 2013 Share Posted July 10, 2013 This hover Window info utility highlights in red the control window or GUI window the mouse is hovering over. The window, mouse and control information is displayed in a tooltip. To work, the windows the mouse is over does not have to be active nor the top most window.The tooltip Displays Window info:- Title: Class: Handle: Mouse info:- Absolute position: Control info:- ClassnameNN: ID: Handle: Position: - Relative to the underlying GUI or control window; and, The absolute position which is relative to the desktop. Size: - Width, length - size in pixels of red highlighted control. ControlClickCoords: - Position relative to the top, left corner of the red highlighted control. No. of Ctrl Layers under Mouse: - The number of controls at the mouse position. Ctrl Layers ClassNN/Hndl: - List of all controls under mouse. Appears when more than one Ctrl layer.Things to know. Pressing Alt + s keys toggles reversing the detection order of the layered controls. (If a control that the mouse is hovering is not being selected but the control at the bottom of the layers is selected, then pressing the Alt+s keys may enable that topmost control to be selected.) Press Alt + UP keys when the Alt + s keys are in the "have not been pressed state". Each Alt+UP keys press selects in green the next control below the previous control for 2 secs. At the bottom of the tooltip each "Ctrl Layer" progressively climbs up from the bottom of the red highlighted control in the list. Press Alt + DOWN keys when the Alt + s keys are in the "have been pressed state". Each Alt+Down keys press selects in green, for 2 secs, the next below layered control. At the bottom of the tooltip each "Ctrl Layer" progressively decended away from the top red highlighted control in the list. Note: While scrolling up or down through the layers once if they exist, the mouse must not move. However, slightly move the mouse to scroll up or down once again. Press Alt + q keys to quit Press Alt + h keys for this help window. expandcollapse popup#include <WinApi.au3> #include <Misc.au3> #include <Array.au3> #include <WindowsConstants.au3> #include <GuiConstantsEx.au3> _Singleton(@ScriptFullPath) Global $iCtrlOrder = 1, $iLayers, $sLayersNN, $hTopControl, $iUpVal = 0, $iTTx, $iTTy Local $aMouse, $tPoint, $hWnd, $hNextWin, $windowList, $hControl, $iPosX, $iPosY, $hOldTopControl = 0, $x, $y Local $aPos, $sClassNN, $sClass, $iCount, $iId, $sCtrl, $aPos, $aWinList, $aUniqList, $iInstances, $iStart Local $aClassNNList, $tRect, $sWin, $ExitBut, $WinClass, $WinAtPtFlag HotKeySet("!h", "_Help") HotKeySet("!s", "_CtrlOrder") HotKeySet("!q", "_Exit") HotKeySet("!{UP}", "_UpLayers") HotKeySet("!{DOWN}", "_UpLayers") While 1 $tPoint = _WinAPI_GetMousePos() $x = DllStructGetData($tPoint, "x") $y = DllStructGetData($tPoint, "y") If ($x <> $iTTx Or $y <> $iTTy) Then $WinAtPtFlag = 0 $iUpVal = 0 $hWnd = _WinAPI_GetAncestor(_WinAPI_WindowFromPoint($tPoint), 2); 2 = $GA_ROOT $WinClass = _WinAPI_GetClassName($hWnd) $hNextWin = "" $hTopControl = "" ; -------- ClassNN List ------------------------------ $windowList = WinGetClassList($hWnd) ;ConsoleWrite($windowList & @LF) $aWinList = StringRegExp($windowList, "[^\v]+", 3) $aUniqList = _ArrayUnique($aWinList) ;_ArrayDisplay($aUniqList) If IsArray($aUniqList) Then For $j = 1 To $aUniqList[0] StringRegExpReplace($windowList, "(?sm)^(" & $aUniqList[$j] & ")$", "") ; The number of replacements performed is stored in @extended. $iInstances = @extended ;ConsoleWrite($aUniqList[$j] & " " & $iInstances & @LF) For $k = $iInstances To 1 Step -1 $iStart = StringInStr($windowList, $aUniqList[$j] & @LF, 2, $k) $windowList = StringRegExpReplace($windowList, "(?sm)^(.{" & $iStart - 1 & "}^" & $aUniqList[$j] & ")$", "${1}" & $k) Next Next ;ConsoleWrite($windowList & @LF & "-----------" & @LF) $aClassNNList = StringRegExp($windowList, "[^\v]+", 3) ; --------> End of ClassNN List ------------------------------ ; --------- Get all layers under Mouse ---------------- $iLayers = 0 $sLayersNN = "" For $j = 0 To UBound($aClassNNList) - 1 $hControl = ControlGetHandle($hWnd, "", $aClassNNList[$j]) ;ConsoleWrite($aClassNNList[$j] & " " & $hControl & @LF) $tRect = _WinAPI_GetWindowRect($hControl) If ControlCommand($hWnd, "", $aClassNNList[$j], "IsVisible") And _ ; Check if control is visible under mouse DllStructGetData($tRect, "Left") <= $x And DllStructGetData($tRect, "Right") >= $x And _ ; Check if control is under mouse DllStructGetData($tRect, "Top") <= $y And DllStructGetData($tRect, "Bottom") >= $y Then $sLayersNN &= @TAB & @TAB & @TAB & $aClassNNList[$j] & @TAB & $hControl & @TAB & @LF ; Add ClassnameNN & Ctrl handle to string. $iLayers += 1 ; Number of controls (layers) If $iCtrlOrder = 0 And $iLayers = 1 Then ; After Alt+s keys has been pressed, the top most control is the first control encountered. $hTopControl = $hControl $sClassNN = $aClassNNList[$j] ElseIf $iCtrlOrder <> 0 Then ; Before Alt+s keys is pressed, the top most control is the last control encountered in the For-Next loop. $hTopControl = $hControl $sClassNN = $aClassNNList[$j] EndIf #cs ; _WinAPI_GetWindow() was found not to be useful in this application. ConsoleWrite($aClassNNList[$j] & " HWNDFIRST: " & _WinAPI_GetWindow($hControl & $iCount, 0) & _ " HWNDLAST: " & _WinAPI_GetWindow($hControl & $iCount, 1) & _ " HWNDNEXT: " & _WinAPI_GetWindow($hControl & $iCount, 2) & _ " HWNDPREV: " & _WinAPI_GetWindow($hControl & $iCount, 3) & _ " OWNER: " & _WinAPI_GetWindow($hControl & $iCount, 4) & _ " CHILD: " & _WinAPI_GetWindow($hControl & $iCount, 5) & @LF) #ce ;ConsoleWrite("From Pt " & _WinAPI_WindowFromPoint($tPoint)& @LF) EndIf Next ;ConsoleWrite("-------------------" & @LF) ; -----> End of "Get all layers under Mouse" ---------------- EndIf ; ------------- Gather all info for Tooltip -------------- $sWin = ">>>>Window<<<< Press Alt+h for Help" & @LF & _ "Title:" & @TAB & WinGetTitle("[Handle:" & $hWnd & "]", "") & @LF & _ "Class:" & @TAB & $WinClass & @LF & _ "Handle:" & @TAB & $hWnd & @LF & @LF & _ ">>>>Mouse<<<< " & @LF & _ "Absolute Position: " & DllStructGetData($tPoint, "x") & ", " & DllStructGetData($tPoint, "y") & @LF _WinAPI_ScreenToClient($hTopControl, $tPoint) If $hTopControl = "" Then ; Window only - no controls under mouse. $sCtrl = "" $tRect = _WinAPI_GetWindowRect($hWnd) Else $tRect = _WinAPI_GetWindowRect($hTopControl) $iId = _WinAPI_GetDlgCtrlID($hTopControl) If $iId = 0 Then $iId = "" $aPos = ControlGetPos($hWnd, "", $sClassNN) $sCtrl = @LF & _ ">>>>Control<<<< " & @LF & _ "ClassNameNN:" & @TAB & $sClassNN & @LF & _ "ID:" & @TAB & @TAB & $iId & @LF & _ "Handle:" & @TAB & @TAB & $hTopControl & @LF & _ "Position:" & @TAB & @TAB & $aPos[0] & ", " & $aPos[1] & "; Abs:" & DllStructGetData($tRect, "Left") & ", " & DllStructGetData($tRect, "Top") & @LF & _ "Size:" & @TAB & @TAB & $aPos[2] & ", " & $aPos[3] & @LF & _ "ControlClick Coords: " & DllStructGetData($tPoint, "x") & ", " & DllStructGetData($tPoint, "y") & @LF & _ "No. of Ctrl Layers under Mouse: " & @TAB & $iLayers & @LF If $iLayers > 1 Then $sCtrl &= "Ctrl Layers ClassNN/Hnd:- " & @LF & $sLayersNN EndIf ; ----- Tooltip ---- $aPos = MouseGetPos() $iPosX = ($aPos[0] - 400) * ($aPos[0] > @DesktopWidth - 400) + ($aPos[0] <= @DesktopWidth - 400) * ($aPos[0] + 20) $iPosY = ($aPos[1] - 400) * ($aPos[1] > @DesktopHeight - 400) + ($aPos[1] <= @DesktopHeight - 400) * ($aPos[1] + 20) ToolTip($sWin & $sCtrl, $iPosX, $iPosY) ; ---> Eng of Tooltip ---- $iTTx = $x ; For "If ($x <> $iTTx Or $y <> $iTTy) Then" line @ top of While loop - Steadies tooltip display. $iTTy = $y If $hOldTopControl <> $hTopControl Then ; - Steadies red outline display. _WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, $RDW_INVALIDATE + $RDW_ALLCHILDREN) ; Clears Red outline graphics. $hOldTopControl = $hTopControl EndIf _DrawtRect($tRect) EndIf Sleep(30) WEnd Func _Help() Local $myedit, $msg, $Text ToolTip("") $Text = @LF & @TAB & @TAB & @TAB & _ " Hot Keys" & @LF & @LF & _ " Press Alt + s keys toggles reversing the detection order of the" & @LF & _ " layered controls. (If a control that the mouse" & @LF & _ " is hovering is not being selected but the control " & @LF & _ " at the bottom of the layers is selected, pressing the" & @LF & _ " Alt+s keys may enable that top control to be selected.);" & @LF & @LF & _ ' Press Alt + UP keys when the Alt + s keys are in the "have not been pressed' & @LF & _ ' state". Each Alt+UP keys press selects in green the' & @LF & _ " next below layered control. At the bottom of the" & @LF & _ ' tooltip each "Ctrl Layer" progressively climbs up' & @LF & _ " from the bottom of the red highlited control in the list." & @LF & @LF & _ ' Press Alt + DOWN keys when the Alt + s keys are in the "have been pressed' & @LF & _ ' state". Each Alt+Down keys press selects in green, for' & @LF & _ " 2 secs, the next below layered control. At the bottom of" & @LF & _ ' the tooltip each "Ctrl Layer" progressively decended away' & @LF & _ " from the top red highlited control in the list." & @LF & @LF & _ " Note: While scrolling up and down through the layers, the mouse must not move." & @LF & @LF & _ " Press Alt + q keys to quit;" & @LF & @LF & _ " Press Alt + h keys for this help window." GUICreate("Help Window", 450, 450) ; will create a dialog box that when displayed is centered GUISetFont(9) $myedit = GUICtrlCreateLabel($Text, 2, 0) $ExitBut = GUICtrlCreateButton('Continue', 190, 410, 70, 20) GUISetState() While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Or $msg = $ExitBut Then ExitLoop WEnd GUIDelete() EndFunc ;==>_Help Func _UpLayers() Local $aLay, $iIndex, $tRect, $tRectGrn, $iUbIndx ;ConsoleWrite(@HotKeyPressed & @LF) $iUpVal += 1 $aLay = StringRegExp($sLayersNN, "\h(0x[^\s]+)", 3) If IsArray($aLay) Then $iUbIndx = UBound($aLay) - 1 $iIndex = _ArraySearch($aLay, $hTopControl) ;if $iIndex < $iUbIndx then $iIndex += $iUpVal Switch @HotKeyPressed Case "!{UP}" If $iIndex - $iUpVal >= 0 Then $iIndex -= $iUpVal Else $iIndex = 0 EndIf Case "!{DOWN}" If $iIndex + $iUpVal <= $iUbIndx Then $iIndex += $iUpVal Else $iIndex = $iUbIndx EndIf EndSwitch $tRect = _WinAPI_GetWindowRect($hTopControl) $tRectGrn = _WinAPI_GetWindowRect($aLay[$iIndex]) ;ConsoleWrite($iUpVal & " " & $aLay[$iIndex] & @LF) _DrawtRect($tRect) _DrawtRect($tRectGrn, 0x00ff00) While Sleep(2000) = 0 WEnd _WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, $RDW_INVALIDATE + $RDW_ALLCHILDREN) EndIf EndFunc ;==>_UpLayers Func _CtrlOrder() If $iCtrlOrder = 1 Then ; Alt+S has not been pressed. $iCtrlOrder = 0 ; Means Alt+S has been pressed. Else $iCtrlOrder = 1 ; Alt+S is in not been pressed state. EndIf EndFunc ;==>_CtrlOrder ; Draws coloured rectangle on screen. Func _DrawtRect($tRect, $color = 0xFF, $PenWidth = 2) Local $hDC, $hPen, $obj_orig, $x1, $x2, $y1, $y2 $x1 = DllStructGetData($tRect, "Left") $x2 = DllStructGetData($tRect, "Right") $y1 = DllStructGetData($tRect, "Top") $y2 = DllStructGetData($tRect, "Bottom") $hDC = _WinAPI_GetWindowDC(0) ; DC of entire screen (desktop) $hPen = _WinAPI_CreatePen($PS_SOLID, $PenWidth, $color) $obj_orig = _WinAPI_SelectObject($hDC, $hPen) _WinAPI_DrawLine($hDC, $x1, $y1, $x2, $y1) ; horizontal to right _WinAPI_DrawLine($hDC, $x2, $y1, $x2, $y2) ; vertical down on right _WinAPI_DrawLine($hDC, $x2, $y2, $x1, $y2) ; horizontal to left right _WinAPI_DrawLine($hDC, $x1, $y2, $x1, $y1) ; vertical up on left ; clear resources _WinAPI_SelectObject($hDC, $obj_orig) _WinAPI_DeleteObject($hPen) _WinAPI_ReleaseDC(0, $hDC) EndFunc ;==>_DrawtRect Func _Exit() _WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, $RDW_INVALIDATE + $RDW_ALLCHILDREN) Exit EndFunc ;==>_Exit Comments One thing I have discovered using this tool was in Internet Explorer. The "AutoIt v3 Window Info" tool shows the IE address bar as ClassnameNN: ToolbarWindow322. This Hover Window Info tool also shows the IE address bar as ClassnameNN:ToolbarWindow322 with six layers of controls. Pressing Alt+Up Arrow keys the next control above the ToolbarWindow322 control in the tooltip list, "Edit1", was highlighted in green and appeared inside the ToolbarWindow322 control. So, ControlGetText("[Class:IEFrame]","","Edit1") returned the address from Internet Explorer's address bar. This tool is of no use in Firefox. I could not find any window controls in the Mozilla Firefox window. The AutoIt Help file made a good test window.ZOrder.au3 This test GUI, "ZOrder.au3", was used to scroll up or down the layered control. I came across some layered controls which would only highlight the bottom most layer on the screen which was the top most control in the list on the tooltip. I found by reversing the layer selection in the list from top to bottom (by pressing Alt+s keys) this info tool worked correctly on the layered controls. And Alt+Down also worked to scroll down through the layered controls. The top control of the tooltip list being the red highlighted control. In the test "ZOrder" window this is how the left side works - Alt+s needs to be pressed. For normal selection of the screen's top most control which appears at the bottom of the tooltip list, Alt+s need not be press. If Alt+s is press, Alt+s needs to be pressed again to return to normal mode which is as though Alt+s had never been pressed. The right side of the test "ZOrder" window does not need Alt+s pressed. Alt+Up is used to scroll up through the list of layered controls on the tooltip. The bottom control of the tooltip list being the red highlighted control. #include <WindowsConstants.au3> #include <EditConstants.au3> Local $Button_1, $myedit1, $myedit2, $myedit3, $myedit4, $myedit5, $myedit6, $myedit7, $myedit8, $Button_2, $label GUICreate("ZOrder Test GUI ", 650, 650, -1, -1) ;GUISetBkColor(0xE0FFFF) $Button_1 = GUICtrlCreateButton("First Control declared - $WS_EX_TOPMOST", 45, 250, 220, -1, -1, $WS_EX_TOPMOST) $myedit1 = GUICtrlCreateEdit("First Edit declared - $WS_EX_TOPMOST" & @CRLF, 120, 120, 180, 300, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL), BitOR($WS_EX_TOPMOST, $WS_EX_STATICEDGE)) $myedit2 = GUICtrlCreateEdit("Second Edit declared - $WS_EX_TOPMOST" & @CRLF, 80, 80, 220, 400, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL), BitOR($WS_EX_TOPMOST, $WS_EX_STATICEDGE)) $myedit3 = GUICtrlCreateEdit("Third Edit declared - $WS_EX_TOPMOST" & @CRLF, 40, 40, 260, 500, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL), BitOR($WS_EX_TOPMOST, $WS_EX_STATICEDGE)) $myedit4 = GUICtrlCreateEdit("Forth Edit declared - $WS_EX_TOPMOST" & @CRLF, 2, 2, 298, 600, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL), BitOR($WS_EX_TOPMOST, $WS_EX_STATICEDGE)) $myedit5 = GUICtrlCreateEdit("Fifth Edit declared" & @CRLF, 327, 2, 298, 600, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL), $WS_EX_STATICEDGE) $myedit6 = GUICtrlCreateEdit("Sixth Edit declared" & @CRLF, 365, 40, 260, 500, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL), $WS_EX_STATICEDGE) $myedit7 = GUICtrlCreateEdit("Seventh Edit declared" & @CRLF, 405, 80, 220, 400, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL), $WS_EX_STATICEDGE) $myedit8 = GUICtrlCreateEdit("Eighth Edit declared" & @CRLF, 445, 120, 203, 300, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL), $WS_EX_STATICEDGE) $Button_2 = GUICtrlCreateButton("Last Control declared", 370, 250, 180, -1, -1) $label = GUICtrlCreateLabel('The LHS (Left Hand Side) controls of this window are not detected by the "Hover for Info" script nor the "Au3Info" utility.' & _ ' By pressing the Alt+S keys while the "Hover for Info" script is running enables detection of the LHS controls and not the RHS controls. ' & _ ' Press the Alt+S keys again to detect the RHS controls again.', 50, 606, 550, 44) GUISetState() While GUIGetMsg() <> -3 WEnd _WinGetClassnameNNList function This _WinGetClassnameNNList function I thought would compliment the _WinGetClassList. The array of all the ClassnameNNs from a window using _WinGetClassnameNNList() are in the same order as the list of Classes from the same window using _WinGetClassList(). expandcollapse popup#include <Array.au3> Opt("WinTitleMatchMode", -2) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase ;Local $Process = "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" ;Local $Process = "ZOrder.exe" Local $Process = "Calc.exe" Local $sTitle = StringRegExpReplace($Process, "(^.*\\)|(\..*$)", "") ;ConsoleWrite($sTitle & @LF) Local $PID = Run($Process) WinActivate($sTitle) Local $hWnd = WinWaitActive($sTitle, "", 3) Local $sWindowList = WinGetClassList($hWnd) ConsoleWrite($sWindowList & @LF) Local $aCNN = _WinGetClassnameNNList($hWnd) _ArrayDisplay($aCNN, "ClassnameNN List") If $PID Then ProcessClose($PID) ; Returns an array of all ClassnameNNs of a window in the same order as the classes are returned using WinGetClassList(). Func _WinGetClassnameNNList($hWnd) Local $aWinList, $aUniqList, $iInstances, $k, $i, $iStart, $sUniqTestStr Local $sWindowList = WinGetClassList($hWnd) ; Window's string of classes list. ;ConsoleWrite("---- Class ----" & @lf & $sWindowList & @LF) $aWinList = StringRegExp($sWindowList, "[^\v]+", 3) If @error = 1 Then MsgBox(1, "Error", "Window has no controls", 2) Return EndIf ; ---- Routine instead of _ArrayUnique() ----- $sUniqTestStr = @LF & $aWinList[0] & @LF For $i = 1 To UBound($aWinList) - 1 If StringInStr($sUniqTestStr, @LF & $aWinList[$i] & @LF, 2) = 0 Then $sUniqTestStr &= $aWinList[$i] & @LF ; A string of unique classes EndIf Next ;ConsoleWrite($sUniqTestStr & @LF) $aUniqList = StringRegExp($sUniqTestStr, "([^\v]+)", 3) ; An array of unique classes ; ----> End of Routine instead of _ArrayUnique() ----- For $j = 0 To UBound($aUniqList) - 1 StringRegExpReplace($sWindowList, "(?sm)^(" & $aUniqList[$j] & ")$", "") ; The number of replacements performed is stored in @extended. $iInstances = @extended ;ConsoleWrite( $aUniqList[$j] & " " & $iInstances & @LF) For $k = $iInstances To 1 Step -1 $iStart = StringInStr($sWindowList, $aUniqList[$j] & @LF, 2, $k) $sWindowList = StringRegExpReplace($sWindowList, "(?sm)^(.{" & $iStart - 1 & "}^" & $aUniqList[$j] & ")$", "${1}" & $k); Append instance to class in Window's string of classes list. ;ConsoleWrite("(?s)^(.{" & $iStart - 1 & "}" & $aUniqList[$j] & ")" & @lf & $sWindowList & @LF) Next Next ;ConsoleWrite("-- ClassnameNN --" & @lf & $sWindowList & @LF) Return StringRegExp($sWindowList, "[^\v]+", 3) ; Return an array of ClassnameNNs. EndFunc ;==>_WinGetClassnameNNList mesale0077 1 Link to comment Share on other sites More sharing options...
Cposture Posted July 10, 2013 Share Posted July 10, 2013 so laconic and powerful the code Link to comment Share on other sites More sharing options...
Malkey Posted July 10, 2013 Author Share Posted July 10, 2013 Thanks! my old china plate. Link to comment Share on other sites More sharing options...
guinness Posted July 11, 2013 Share Posted July 11, 2013 Nice malkey. I tested on Windows 7 x64 with an issue that the highlighted line isn't destroyed when I move to a different control. I also found the tooltip to flicker quite a bit. UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
UEZ Posted July 11, 2013 Share Posted July 11, 2013 (edited) This works properly (red retangle) on my system (Win7 x64 + Aero):expandcollapse popup#include <WinApi.au3> #include <Misc.au3> #include <Array.au3> #include <WindowsConstants.au3> #include <GuiConstantsEx.au3> _Singleton(@ScriptFullPath) Global $iCtrlOrder = 1, $iLayers, $sLayersNN, $hTopControl, $iUpVal = 0, $iTTx, $iTTy Local $aMouse, $tPoint, $hWnd, $hNextWin, $windowList, $hControl, $iPosX, $iPosY, $hOldTopControl = 0, $x, $y Local $aPos, $sClassNN, $sClass, $iCount, $iId, $sCtrl, $aPos, $aWinList, $aUniqList, $iInstances, $iStart Local $aClassNNList, $tRect, $sWin, $ExitBut, $WinClass, $WinAtPtFlag Local Const $frame_size = 3 Local $hGUI_Mark = GUICreate("", 0, 0, 0, 0, $WS_POPUP, $WS_EX_TOPMOST + $WS_EX_TOOLWINDOW), $x1, $x2, $y1, $y2, $x1o, $y1o GUISetBkColor(0xFF0000, $hGUI_Mark) GUISetState() HotKeySet("!h", "_Help") HotKeySet("!s", "_CtrlOrder") HotKeySet("!q", "_Exit") HotKeySet("!{UP}", "_UpLayers") HotKeySet("!{DOWN}", "_UpLayers") While 1 $tPoint = _WinAPI_GetMousePos() $x = DllStructGetData($tPoint, "x") $y = DllStructGetData($tPoint, "y") If ($x <> $iTTx Or $y <> $iTTy) Then $WinAtPtFlag = 0 $iUpVal = 0 $hWnd = _WinAPI_GetAncestor(_WinAPI_WindowFromPoint($tPoint), 2); 2 = $GA_ROOT $WinClass = _WinAPI_GetClassName($hWnd) $hNextWin = "" $hTopControl = "" ; -------- ClassNN List ------------------------------ $windowList = WinGetClassList($hWnd) ;ConsoleWrite($windowList & @LF) $aWinList = StringRegExp($windowList, "[^\v]+", 3) $aUniqList = _ArrayUnique($aWinList) ;_ArrayDisplay($aUniqList) If IsArray($aUniqList) Then For $j = 1 To $aUniqList[0] StringRegExpReplace($windowList, "(?sm)^(" & $aUniqList[$j] & ")$", "") ; The number of replacements performed is stored in @extended. $iInstances = @extended ;ConsoleWrite($aUniqList[$j] & " " & $iInstances & @LF) For $k = $iInstances To 1 Step -1 $iStart = StringInStr($windowList, $aUniqList[$j] & @LF, 2, $k) $windowList = StringRegExpReplace($windowList, "(?sm)^(.{" & $iStart - 1 & "}^" & $aUniqList[$j] & ")$", "${1}" & $k) Next Next ;ConsoleWrite($windowList & @LF & "-----------" & @LF) $aClassNNList = StringRegExp($windowList, "[^\v]+", 3) ; --------> End of ClassNN List ------------------------------ ; --------- Get all layers under Mouse ---------------- $iLayers = 0 $sLayersNN = "" For $j = 0 To UBound($aClassNNList) - 1 $hControl = ControlGetHandle($hWnd, "", $aClassNNList[$j]) ;ConsoleWrite($aClassNNList[$j] & " " & $hControl & @LF) $tRect = _WinAPI_GetWindowRect($hControl) If ControlCommand($hWnd, "", $aClassNNList[$j], "IsVisible") And _ ; Check if control is visible under mouse DllStructGetData($tRect, "Left") <= $x And DllStructGetData($tRect, "Right") >= $x And _ ; Check if control is under mouse DllStructGetData($tRect, "Top") <= $y And DllStructGetData($tRect, "Bottom") >= $y Then $sLayersNN &= @TAB & @TAB & @TAB & $aClassNNList[$j] & @TAB & $hControl & @TAB & @LF ; Add ClassnameNN & Ctrl handle to string. $iLayers += 1 ; Number of controls (layers) If $iCtrlOrder = 0 And $iLayers = 1 Then ; After Alt+s keys has been pressed, the top most control is the first control encountered. $hTopControl = $hControl $sClassNN = $aClassNNList[$j] ElseIf $iCtrlOrder <> 0 Then ; Before Alt+s keys is pressed, the top most control is the last control encountered in the For-Next loop. $hTopControl = $hControl $sClassNN = $aClassNNList[$j] EndIf #cs ; _WinAPI_GetWindow() was found not to be useful in this application. ConsoleWrite($aClassNNList[$j] & " HWNDFIRST: " & _WinAPI_GetWindow($hControl & $iCount, 0) & _ " HWNDLAST: " & _WinAPI_GetWindow($hControl & $iCount, 1) & _ " HWNDNEXT: " & _WinAPI_GetWindow($hControl & $iCount, 2) & _ " HWNDPREV: " & _WinAPI_GetWindow($hControl & $iCount, 3) & _ " OWNER: " & _WinAPI_GetWindow($hControl & $iCount, 4) & _ " CHILD: " & _WinAPI_GetWindow($hControl & $iCount, 5) & @LF) #ce ;ConsoleWrite("From Pt " & _WinAPI_WindowFromPoint($tPoint)& @LF) EndIf Next ;ConsoleWrite("-------------------" & @LF) ; -----> End of "Get all layers under Mouse" ---------------- EndIf ; ------------- Gather all info for Tooltip -------------- $sWin = ">>>>Window<<<< Press Alt+h for Help" & @LF & _ "Title:" & @TAB & WinGetTitle("[Handle:" & $hWnd & "]", "") & @LF & _ "Class:" & @TAB & $WinClass & @LF & _ "Handle:" & @TAB & $hWnd & @LF & @LF & _ ">>>>Mouse<<<< " & @LF & _ "Absolute Position: " & DllStructGetData($tPoint, "x") & ", " & DllStructGetData($tPoint, "y") & @LF _WinAPI_ScreenToClient($hTopControl, $tPoint) If $hTopControl = "" Then ; Window only - no controls under mouse. $sCtrl = "" $tRect = _WinAPI_GetWindowRect($hWnd) Else $tRect = _WinAPI_GetWindowRect($hTopControl) $iId = _WinAPI_GetDlgCtrlID($hTopControl) If $iId = 0 Then $iId = "" $aPos = ControlGetPos($hWnd, "", $sClassNN) $sCtrl = @LF & _ ">>>>Control<<<< " & @LF & _ "ClassNameNN:" & @TAB & $sClassNN & @LF & _ "ID:" & @TAB & @TAB & $iId & @LF & _ "Handle:" & @TAB & @TAB & $hTopControl & @LF & _ "Position:" & @TAB & @TAB & $aPos[0] & ", " & $aPos[1] & "; Abs:" & DllStructGetData($tRect, "Left") & ", " & DllStructGetData($tRect, "Top") & @LF & _ "Size:" & @TAB & @TAB & $aPos[2] & ", " & $aPos[3] & @LF & _ "ControlClick Coords: " & DllStructGetData($tPoint, "x") & ", " & DllStructGetData($tPoint, "y") & @LF & _ "No. of Ctrl Layers under Mouse: " & @TAB & $iLayers & @LF If $iLayers > 1 Then $sCtrl &= "Ctrl Layers ClassNN/Hnd:- " & @LF & $sLayersNN EndIf ; ----- Tooltip ---- $aPos = MouseGetPos() $iPosX = ($aPos[0] - 400) * ($aPos[0] > @DesktopWidth - 400) + ($aPos[0] <= @DesktopWidth - 400) * ($aPos[0] + 20) $iPosY = ($aPos[1] - 400) * ($aPos[1] > @DesktopHeight - 400) + ($aPos[1] <= @DesktopHeight - 400) * ($aPos[1] + 20) ; ---> Eng of Tooltip ---- $iTTx = $x ; For "If ($x <> $iTTx Or $y <> $iTTy) Then" line @ top of While loop - Steadies tooltip display. $iTTy = $y If $hOldTopControl <> $hTopControl Then ; - Steadies red outline display. _WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, $RDW_INVALIDATE + $RDW_ALLCHILDREN) ; Clears Red outline graphics. $hOldTopControl = $hTopControl EndIf ;~ _DrawtRect($tRect) $x1 = DllStructGetData($tRect, "Left") $y1 = DllStructGetData($tRect, "Top") $x2 = DllStructGetData($tRect, "Right") $y2 = DllStructGetData($tRect, "Bottom") If $x1 <> $x1o Or $y1 <> $y1o Then ToolTip($sWin & $sCtrl, $iPosX, $iPosY) WinMove($hGUI_Mark, "", $x1, $y1, $x2 - $x1, $y2 - $y1) _GuiHole($hGUI_Mark, $frame_size, $frame_size, ($x2 - $x1) - 2 * $frame_size, ($y2 - $y1) - 2 * $frame_size, ($x2 - $x1), ($y2 - $y1)) GUISetState(@SW_SHOW, $hGUI_Mark) WinSetOnTop($hGUI_Mark, 0, 1) $x1o = $x1 $y1o = $y1 EndIf EndIf Sleep(30) WEnd Func _GuiHole($hWnd, $i_x, $i_y, $i_sizew, $i_sizeh, $width, $height) Local $outer_rgn, $inner_rgn, $combined_rgn $outer_rgn = _WinAPI_CreateRectRgn(0, 0, $width, $height) $inner_rgn = _WinAPI_CreateRectRgn($i_x, $i_y, $i_x + $i_sizew, $i_y + $i_sizeh) $combined_rgn = _WinAPI_CreateRectRgn(0, 0, 0, 0) _WinAPI_CombineRgn($combined_rgn, $outer_rgn, $inner_rgn, $RGN_DIFF) _WinAPI_DeleteObject($outer_rgn) _WinAPI_DeleteObject($inner_rgn) _WinAPI_SetWindowRgn($hWnd, $combined_rgn) EndFunc ;==>_GuiHole Func _Help() Local $myedit, $msg, $Text ToolTip("") $Text = @LF & @TAB & @TAB & @TAB & _ " Hot Keys" & @LF & @LF & _ " Press Alt + s keys toggles reversing the detection order of the" & @LF & _ " layered controls. (If a control that the mouse" & @LF & _ " is hovering is not being selected but the control " & @LF & _ " at the bottom of the layers is selected, pressing the" & @LF & _ " Alt+s keys may enable that top control to be selected.);" & @LF & @LF & _ ' Press Alt + UP keys when the Alt + s keys are in the "have not been pressed' & @LF & _ ' state". Each Alt+UP keys press selects in green the' & @LF & _ " next below layered control. At the bottom of the" & @LF & _ ' tooltip each "Ctrl Layer" progressively climbs up' & @LF & _ " from the bottom of the red highlited control in the list." & @LF & @LF & _ ' Press Alt + DOWN keys when the Alt + s keys are in the "have been pressed' & @LF & _ ' state". Each Alt+Down keys press selects in green, for' & @LF & _ " 2 secs, the next below layered control. At the bottom of" & @LF & _ ' the tooltip each "Ctrl Layer" progressively decended away' & @LF & _ " from the top red highlited control in the list." & @LF & @LF & _ " Note: While scrolling up and down through the layers, the mouse must not move." & @LF & @LF & _ " Press Alt + q keys to quit;" & @LF & @LF & _ " Press Alt + h keys for this help window." GUICreate("Help Window", 450, 450) ; will create a dialog box that when displayed is centered GUISetFont(9) $myedit = GUICtrlCreateLabel($Text, 2, 0) $ExitBut = GUICtrlCreateButton('Continue', 190, 410, 70, 20) GUISetState() While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Or $msg = $ExitBut Then ExitLoop WEnd GUIDelete() EndFunc ;==>_Help Func _UpLayers() Local $aLay, $iIndex, $tRect, $tRectGrn, $iUbIndx ;ConsoleWrite(@HotKeyPressed & @LF) $iUpVal += 1 $aLay = StringRegExp($sLayersNN, "\h(0x[^\s]+)", 3) If IsArray($aLay) Then $iUbIndx = UBound($aLay) - 1 $iIndex = _ArraySearch($aLay, $hTopControl) ;if $iIndex < $iUbIndx then $iIndex += $iUpVal Switch @HotKeyPressed Case "!{UP}" If $iIndex - $iUpVal >= 0 Then $iIndex -= $iUpVal Else $iIndex = 0 EndIf Case "!{DOWN}" If $iIndex + $iUpVal <= $iUbIndx Then $iIndex += $iUpVal Else $iIndex = $iUbIndx EndIf EndSwitch $tRect = _WinAPI_GetWindowRect($hTopControl) $tRectGrn = _WinAPI_GetWindowRect($aLay[$iIndex]) ;ConsoleWrite($iUpVal & " " & $aLay[$iIndex] & @LF) _DrawtRect($tRect) _DrawtRect($tRectGrn, 0x00ff00) While Sleep(2000) = 0 WEnd _WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, $RDW_INVALIDATE + $RDW_ALLCHILDREN) EndIf EndFunc ;==>_UpLayers Func _CtrlOrder() If $iCtrlOrder = 1 Then ; Alt+S has not been pressed. $iCtrlOrder = 0 ; Means Alt+S has been pressed. Else $iCtrlOrder = 1 ; Alt+S is in not been pressed state. EndIf EndFunc ;==>_CtrlOrder ; Draws coloured rectangle on screen. Func _DrawtRect($tRect, $color = 0xFF, $PenWidth = 2) Local $hDC, $hPen, $obj_orig, $x1, $x2, $y1, $y2 $x1 = DllStructGetData($tRect, "Left") $x2 = DllStructGetData($tRect, "Right") $y1 = DllStructGetData($tRect, "Top") $y2 = DllStructGetData($tRect, "Bottom") $hDC = _WinAPI_GetWindowDC(0) ; DC of entire screen (desktop) $hPen = _WinAPI_CreatePen($PS_SOLID, $PenWidth, $color) $obj_orig = _WinAPI_SelectObject($hDC, $hPen) _WinAPI_DrawLine($hDC, $x1, $y1, $x2, $y1) ; horizontal to right _WinAPI_DrawLine($hDC, $x2, $y1, $x2, $y2) ; vertical down on right _WinAPI_DrawLine($hDC, $x2, $y2, $x1, $y2) ; horizontal to left right _WinAPI_DrawLine($hDC, $x1, $y2, $x1, $y1) ; vertical up on left ; clear resources _WinAPI_SelectObject($hDC, $obj_orig) _WinAPI_DeleteObject($hPen) _WinAPI_ReleaseDC(0, $hDC) EndFunc ;==>_DrawtRect Func _Exit() _WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, $RDW_INVALIDATE + $RDW_ALLCHILDREN) Exit EndFunc ;==>_ExitBtw, do you know how I can check whether a frame has a scrollbar? E.g. if you open the help file you will see on the right frame a scrollbar.... Br,UEZ Edited July 11, 2013 by UEZ mesale0077 and yutijang 2 Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
Ascend4nt Posted July 11, 2013 Share Posted July 11, 2013 Btw, do you know how I can check whether a frame has a scrollbar? E.g. if you open the help file you will see on the right frame a scrollbar.... Do you mean something like _WinAPI_GetWindowLong($hWnd, $GWL_STYLE)? GetWindowLong @ MSDN My contributions: Performance Counters in Windows - Measure CPU, Disk, Network etc Performance | Network Interface Info, Statistics, and Traffic | CPU Multi-Processor Usage w/o Performance Counters | Disk and Device Read/Write Statistics | Atom Table Functions | Process, Thread, & DLL Functions UDFs | Process CPU Usage Trackers | PE File Overlay Extraction | A3X Script Extract | File + Process Imports/Exports Information | Windows Desktop Dimmer Shade | Spotlight + Focus GUI - Highlight and Dim for Eyestrain Relief | CrossHairs (FullScreen) | Rubber-Band Boxes using GUI's (_GUIBox) | GUI Fun! | IE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) | Magnifier (Vista+) Functions UDF | _DLLStructDisplay (Debug!) | _EnumChildWindows (controls etc) | _FileFindEx | _ClipGetHTML | _ClipPutHTML + ClipPutHyperlink | _FileGetShortcutEx | _FilePropertiesDialog | I/O Port Functions | File(s) Drag & Drop | _RunWithReducedPrivileges | _ShellExecuteWithReducedPrivileges | _WinAPI_GetSystemInfo | dotNETGetVersions | Drive(s) Power Status | _WinGetDesktopHandle | _StringParseParameters | Screensaver, Sleep, Desktop Lock Disable | Full-Screen Crash Recovery Wrappers/Modifications of others' contributions: _DOSWildcardsToPCRegEx (original code: RobSaunder's) | WinGetAltTabWinList (original: Authenticity) UDF's added support/programming to: _ExplorerWinGetSelectedItems | MIDIEx UDF (original code: eynstyne) (All personal code/wrappers centrally located at Ascend4nt's AutoIT Code) Link to comment Share on other sites More sharing options...
UEZ Posted July 12, 2013 Share Posted July 12, 2013 (edited) @Ascend4nt: I know that but somehow it doesn't work or I'm using it wrongly: $aRet = DllCall("user32.dll", "int", "WindowFromPoint", "long", MouseGetPos(0), "long", MouseGetPos(1)) $hWnd = HWnd($aRet[0]) $idCtrl = _WinAPI_GetDlgCtrlID($hWnd) $hCtrl = ControlGetHandle($hWnd, "", $idCtrl) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hCtrl = ' & $hCtrl & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console If BitAND(_WinAPI_GetWindowLong($hCtrl, $GWL_STYLE), $SB_VERT) = $SB_VERT Or BitAND(_WinAPI_GetWindowLong($hCtrl, $GWL_STYLE), $SB_HORZ) = $SB_HORZ Then Here the fragment I'm using to check whether the control has scrollbars but it doesn't work for all kind of control, e.g. the helpfile. Br, UEZ Edited July 12, 2013 by UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
guinness Posted July 12, 2013 Share Posted July 12, 2013 Use WS_HSCROLL and WS_VSCROLL instead. UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
Wombat Posted August 15, 2013 Share Posted August 15, 2013 (edited) I added this to my SciTE Tools with: # 45 command.name.45.*=Hover Tool command.45.*="$(SciteDefaultHome)\HoverTool\HoverTool.exe" $(CurrentSelection) command.shortcut.45.*=Ctrl+Alt+h adding the above to the SciTEGlobal.properties file(at the bottom, then compiling your (@Malkey) script and placing it in (SciteDefaultHome)HoverTool folder (you'll need to create it....) It helps for getting information on windows I'm working with in my scripts! thanks! Edited August 15, 2013 by Wombat Just look at us.Everything is backwards; everything is upside down. Doctors destroy health. Lawyers destroy justice. Universities destroy knowledge. Governments destroy freedom. The major media destroy information and religions destroy spirituality. ~ Michael Ellner The internet is our one and only hope at a truly free world, do not let them take it from us... Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now