Jump to content

Autolaser

Active Members
  • Posts

    26
  • Joined

  • Last visited

Reputation Activity

  1. Like
    Autolaser reacted to jdelaney in Get All Window's Controls   
    I've wanted to post this for a while.  It's a great script to help debug control data....perfect scenario, when you have a 'Button' grouping, and spy tools cannot focus on those controls within the button bounds (groups).
    I also use it to verify that a given ID is not present more than once...if not, that's how I identify the control in future scripts.
     
    Output can be filtered by:
    1) Filter by IsVisible
    2) Filter by matching class (ex Button, Label, Static)
    3) Filter by containing text
    #include <Array.au3> #include <WinAPI.au3> ConsoleWrite("Make your window active!" & @CRLF) Sleep(5000) GetAllWindowsControls(WinGetHandle("[ACTIVE]")) Func GetAllWindowsControls($hCallersWindow, $bOnlyVisible=Default, $sStringIncludes=Default, $sClass=Default) If Not IsHWnd($hCallersWindow) Then ConsoleWrite("$hCallersWindow must be a handle...provided=[" & $hCallersWindow & "]" & @CRLF) Return False EndIf ; Get all list of controls If $bOnlyVisible = Default Then $bOnlyVisible = False If $sStringIncludes = Default Then $sStringIncludes = "" If $sClass = Default Then $sClass = "" $sClassList = WinGetClassList($hCallersWindow) ; Create array $aClassList = StringSplit($sClassList, @CRLF, 2) ; Sort array _ArraySort($aClassList) _ArrayDelete($aClassList, 0) ; Loop $iCurrentClass = "" $iCurrentCount = 1 $iTotalCounter = 1 If StringLen($sClass)>0 Then For $i = UBound($aClassList)-1 To 0 Step - 1 If $aClassList[$i]<>$sClass Then _ArrayDelete($aClassList,$i) EndIf Next EndIf For $i = 0 To UBound($aClassList) - 1 If $aClassList[$i] = $iCurrentClass Then $iCurrentCount += 1 Else $iCurrentClass = $aClassList[$i] $iCurrentCount = 1 EndIf $hControl = ControlGetHandle($hCallersWindow, "", "[CLASSNN:" & $iCurrentClass & $iCurrentCount & "]") $text = StringRegExpReplace(ControlGetText($hCallersWindow, "", $hControl), "[\n\r]", "{@CRLF}") $aPos = ControlGetPos($hCallersWindow, "", $hControl) $sControlID = _WinAPI_GetDlgCtrlID($hControl) $bIsVisible = ControlCommand($hCallersWindow, "", $hControl, "IsVisible") If $bOnlyVisible And Not $bIsVisible Then $iTotalCounter += 1 ContinueLoop EndIf If StringLen($sStringIncludes) > 0 Then If Not StringInStr($text, $sStringIncludes) Then $iTotalCounter += 1 ContinueLoop EndIf EndIf If IsArray($aPos) Then ConsoleWrite("Func=[GetAllWindowsControls]: ControlCounter=[" & StringFormat("%3s", $iTotalCounter) & "] ControlID=[" & StringFormat("%5s", $sControlID) & "] Handle=[" & StringFormat("%10s", $hControl) & "] ClassNN=[" & StringFormat("%19s", $iCurrentClass & $iCurrentCount) & "] XPos=[" & StringFormat("%4s", $aPos[0]) & "] YPos=[" & StringFormat("%4s", $aPos[1]) & "] Width=[" & StringFormat("%4s", $aPos[2]) & "] Height=[" & StringFormat("%4s", $aPos[3]) & "] IsVisible=[" & $bIsVisible & "] Text=[" & $text & "]." & @CRLF) Else ConsoleWrite("Func=[GetAllWindowsControls]: ControlCounter=[" & StringFormat("%3s", $iTotalCounter) & "] ControlID=[" & StringFormat("%5s", $sControlID) & "] Handle=[" & StringFormat("%10s", $hControl) & "] ClassNN=[" & StringFormat("%19s", $iCurrentClass & $iCurrentCount) & "] XPos=[winclosed] YPos=[winclosed] Width=[winclosed] Height=[winclosed] Text=[" & $text & "]." & @CRLF) EndIf If Not WinExists($hCallersWindow) Then ExitLoop $iTotalCounter += 1 Next EndFunc ;==>GetAllWindowsControls
  2. Like
    Autolaser got a reaction from Dieuz in Looping while GUI while loop is running   
    use Opt("GUIOnEventMode", 1) and AdlibRegister
    Opt("GUIOnEventMode", 1) HotKeySet("{ESC}", "_Exit") AdlibRegister("myfunc", 120000) Func myfunc() ConsoleWrite("myfunc ist running"&@CR) EndFunc Func _Exit() Exit EndFunc ;==>_Exit While 1 Sleep(50) WEnd
  3. Like
    Autolaser got a reaction from tonyrocks in Screen Capture Browser Window Only   
    _ScreenCapture_CaptureWnd #include <ScreenCapture.au3> Example() Func Example() Local $hGUI ; Create GUI $hGUI = GUICreate("Screen Capture", 400, 300) GUISetState(@SW_SHOW) Sleep(250) ; Capture window _ScreenCapture_CaptureWnd(@MyDocumentsDir & "\GDIPlus_Image.jpg", $hGUI) ShellExecute(@MyDocumentsDir & "\GDIPlus_Image.jpg") EndFunc ;==>Example
  4. Like
    Autolaser reacted to BuckMaster in Form Builder beta   
    Update v1.0.6

    Major script overhaul, I literally started over from scratch only adding parts of code from the old script that were solid.
    I don’t have a help file made as of now so I am going to explain all of the functionality in this post
    - Form Builder is no longer bi-directional, you now toggle between script mode and GUI mode using a button in the top right or F4
    - The script no longer recompiles on every change but instead inserts changes into the script
    - Form Builder no longer cares about Event mode or GuiGetMsg mode
    - No more .gui files, you now edit .au3 scripts directly
    - Script edit is now a SciLexer control, includes syntax highlighting, folding, call tips, keywords, and inline error annotations.
    - Script output console is now at the bottom in script mode
    - Main GUI menu redone, most functions from SciTe have been added along with their hotkeys
    - All restrictions to editing the script have been removed
    - GDI+ and Graphic editors removed
    - Cleanup of script, stability greatly increased
    - Hotkeys no longer use _IsPressed they now use GUIAccelerator keys (with exception to a few)
    - Multiple scripts can be open
    - Form Builder buffers the open scripts and adds an asterisk * to scripts that have been modified
    - Rich Edit, GUIScrollbars, Dummy, and Updown are disabled for now until I can add them
    - GUI Menu controls cannot be created as of now but will be rendered in the editor
    - Undo and Redo actions in script mode and GUI mode added, the GUI undo and redo buffer is cleared switching between modes
    - The Undo and Redo buffers do not have a limit but are cleared when switching between modes or scripts
    - Undo and Redo actions do not work for controls that have no control handle
    - The Treeview now works as a Go to function for controls and functions in script mode
    - Form Builder now tries to preserve as much of the original content as possible, it will save whitespace in-between parameters and comments on controls
    - Treeview context menu reworked, much more responsive
    - Unicode support added File -> Encoding -> UTF-8
    - Language support added, I added a couple of language files and used Google translate just so I could size my GUI's for different languages, I do not support what those language files say
    - Selecting a GUI in the Treeview in GUI mode will allow you to change the GUI's Handle, Position, Background Color, State, Cursor, Font, Font Size and Font Attributes
    - Auto Declare is no longer hiding in the settings, it is now on the top right and is a toggle between Off, Global and Local
    - Help File Lookup added (Ctrl + H), allows you to search selected text in the help file,
      Any variable will be searched and the first result will be displayed, any string will be searched as a keyword in the index
    - Added current script line, column, and selection length in the bottom left
    - Standard undeclared style constants are checked before script execution and the script will prompt if an undefined style constant is found
    - You can now toggle script whitespace, EOL characters, line numbers, margins and output in the View menu
    - View -> Toggle All Folds works as it does in SciTe, only base level folds are changed and the first fold found determines whether to expand or contract
    - Form Builder Settings redone
    - Bugs with submitting data and control selection have been fixed
    - Fixed problems with frequently called repetitive functions causing issues with large scripts
    - Fixed bugs with B, I, U and S font attribute buttons getting stuck and called when enter was pressed
    Update v1.0.7
    - Help File Look-up hotkey changed to Ctrl+B
    - Replace hotkey changed to Ctrl+H
    - Changes to $SCN_MODIFIED so only text events are notified
    - Bookmarks added, Ctrl+M to add or delete a Bookmark from the current line
    - Edit -> Bookmarks -> Set Bookmark changes the currently selected Bookmark
    - Edit -> Clear Current Bookmarks deletes only the currently selected Bookmark
    - Allows you to change foreground and background colors of Bookmarks
    - Added F2 hotkey for Next Bookmark
    - Added Shift+F2 hotkey for Previous Bookmark
    - Fixed a bug that made it so script annotation did not show up for some people
    - Script errors and warnings now add a Bookmark on each line
    - Ctrl+E hotkey added to clear all Bookmarks and Annotations
    - Minor GUI tweaks
    - Fixed a bug with the GUI Style undo action
    - Undo and Redo actions for GUI windows will now update the window properties if the GUI is selected
    - F4 Hotkey no longer switches modes, switching modes is now F10
    - F4 is to toggle next error or warning message, works like it does in SciTe, bookmarks the line and highlights the error in the console
    - Shift+F4 Hotkey added to toggle previous error or warning message
    - Shift+F5 Hotkey added to clear script output
    - Ctrl+F5 Hotkey added as SyntaxCheck Prod
    - Form Builder now performs a SyntaxCheck before entering GUI Mode and prompts on Error or Warning
    - Language Select Menu Added Settings -> Lanugage
    - Icons added to main menu
    - Languages added to all new menu items and msgbox's
    - Language Files updated for new data
    - Language Support added for Arabic, Chinese, Dutch, French, German, Hebrew, Japanese, Swedish, Thai, and Vietnamese [ Google Translate ]
    - Fixed bug with updating a language that made it look like ANSI and UTF-8 were both selected
    - Added redo button next to undo button
    - Font attribute buttons Bold, Italic, Underline and Strike-Out changed to labels
    Update v1.0.8
    - Somehow a main function got deleted causing the script to crash on some changes
    - Fixed some issues with updating Languages
     


    Hotkeys
    Ctrl + N              - New Blank Script
    Ctrl + G              - New GUI Script
    Ctrl + O              - Open Script
    Ctrl + Shift + S   - Save As
    Ctrl + S              - Save
    Esc                    - Close Open Script
    Alt + F4              - Exit
    Ctrl + Z              - Undo
    Ctrl + Y              - Redo
    Ctrl + X              - Cut
    Ctrl + C              - Copy
    Ctrl + V              - Paste
    Ctrl + A              - Select All
    Ctrl + W             - Clear inline script annotation
    Ctrl + E              - Clear inline script annotation and bookmarks
    Ctrl + F              - Find
    Ctrl + F3            - Find Next
    Shift + F3           - Find Previous (doesn’t work yet)
    Ctrl + B              - Help File Lookup
    F5                      - Go
    Alt + F5             - Beta Run
    F7                     - Build
    Ctrl + F7            - Compile
    F11                    - Full screen
    F8                     - Toggle Show/Hide Script Output
    Ctrl + I               - Open Include
    Ctrl + H             - Replace
    F1                     - AutoIt Help File
    Ctrl + D             - Duplicate Control
    Delete               - Delete Control
    Ctrl + Shift + 8   - Toggle Show/Hide Script Whitespace
    Ctrl + Shift + 9   - Toggle Show/Hide Script EOL characters
    Ctrl                    - GUI Mode multicontrol selection
    F10                     - Switch Modes
    F4                     - Next Message
    Shift+F4            - Previous Message
    Shift+F5            - Clear Output
    Ctrl+M               - Add Bookmark
    F2                     - Next Bookmark
    Shift+F2            - Previous Bookmark
    Basic GUI Mode How To

    Create a Control
        - click a control on the left
        - click in the GUI you wish to add the control
          Left Click: Click and drag to auto resize the control
          Right Click: Creates the control at a standard size
    Select a Control
        - click inside the control or select it in the treeview
    Change a controls Data
        - First select the control
        - modify the controls data on the right, press enter to submit changes
          state, cursor, font and resizing update when you change the data
        - when modifying the data parameter the script recognizes if there is a variable in the data and will add quotes accordingly
          ex. data parameter = $data, End result in script: GUICtrlCreateButton($data, 50, 50, 100, 20)
          ex. data parameter = data, End result in script: GUICtrlCreateButton("data", 50, 50, 100, 20)
          ex. data parameter = "data"&$data, End result in script: GUICtrlCreateButton("data"&$data, 50, 50, 100, 20)
    Applying an Image to a control
        - select a control
        - control styles must be applied to some controls before adding an image
        - click the ... button next to the Image input in the Control Properties area in the bottom right
        - select the image you want to display, allows jpg, bmp, gif, ico and dll files
        - selecting a dll will open another prompt to choose which resource to display
    Control Grouping
        - multiple controls must be selected
        - press the group controls button
        - control grouping allows you to resize and move multiple controls at the same time, as of now groups are deleted when leaving GUI mode
    I only have a couple odds and ends to finish up before everything should be complete,
    I need to add Undo and Redo actions for copying and duplicating controls and a couple other minor things,
    eventually I want to try to add all of the UDF controls as well.
    If people are willing to translate the language file I would be very grateful, the ones I have right now are from Google translate, I only used them for testing and have no idea what they say.
    I want to thank Kip, Prog@ndy, Isi360 and all of the other contributors on this forum, without you guys i don't think i could have written this script.

    Please post any comments, problems or suggestions,
        BuckMaster


    * I only used one "magic number" on my main close case statement, only for faster locating, and i don't care.
    Form Builder Source.zip
    Form Builder.zip
  5. Like
    Autolaser reacted to smashly in Timer stopwatch issue   
    Hi, maybe you could use _TicksToTime() and StringFormat() to get the time to display as you need.
    #include <Date.au3> ; used for _TicksToTime() HotKeySet("{ESC}", "Quit") ; to exit HotKeySet("{NUMPADADD}", "start_timer") ; Start or Reset timer ;Set and unset Pause and Resume hotkeys, eliminates multi pressing of pause or resume. Global $Init0, $PausedTimer, $iHours, $iMins, $iSecs While 1 Sleep(10) ; Small sleep to lower cpu usage WEnd ; The function that starts or resets the stopwatch Func start_timer() HotKeySet("{NUMPADMULT}") ;disable resume timer HotKeySet("{NUMPADSUB}", "pause_timer") ;enable pause timer $PausedTimer = 0 $Init0 = TimerInit() AdlibRegister("show_timer", 60) EndFunc ;==>start_timer ; The function that pauses the stopwatch Func pause_timer() HotKeySet("{NUMPADSUB}") ;disable pause timer HotKeySet("{NUMPADMULT}", "resume_timer") ;enable resume timer $PausedTimer += Int(TimerDiff($Init0)) AdlibUnRegister() EndFunc ;==>pause_timer ; The function that resumes the stopwatch Func resume_timer() HotKeySet("{NUMPADMULT}") ;disable resume timer HotKeySet("{NUMPADSUB}", "pause_timer") ;enable pause timer $Init0 = TimerInit() AdlibRegister("show_timer", 60) EndFunc ;==>resume_timer Func show_timer() ; _TicksToTime to get hours, mins, seconds _TicksToTime(Int(TimerDiff($Init0) + $PausedTimer), $iHours, $iMins, $iSecs) ;StringFormat to display the time as HH:MM:SS ToolTip("HH:MM:SS = " & StringFormat("%02i:%02i:%02i", $iHours, $iMins, $iSecs), 0, 0, "Timer") EndFunc ;==>show_timer ; Exit Func Quit() Exit EndFunc ;==>Quit
    Cheers
  6. Like
    Autolaser got a reaction from FaridAgl in Default text on InputBox when it's empty?   
    @ guinness

    I know not all the functions and commands.
    Until now I always used to put GUICtrlSendMsg after an action, the Description field.

    The set color is valid only for the message to the input field.
    When you click in the Texfeld for input, get out of the description and the text entry box is empty.
    That was the question here.


    EM_SETCUEBANNER I did not know yet.
    Thank you, I'm going to test my scripts.
×
×
  • Create New...