jaberwacky Posted March 3, 2015 Share Posted March 3, 2015 (edited) So I'm making what I had assumed would be a stupid simple script. The script is supposed to change Window's active mouse tracking. Essentially, it makes window focus follow the mouse cursor. The problem is when I use GUICtrlGetState on the checkboxes. They return 80 which is GUI_ENABLE + GUI_SHOW. Should they also not return GUI_CHECKED or GUI_UNCHECKED? I'm sure I'm just overlooking something really simple. expandcollapse popup#Region ; Active Window Tracking Toy #RequireAdmin #Region ; includes #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WinAPI.au3> #include <WinAPIsysinfoConstants.au3> #EndRegion #Region ; GUI generated by GUIBuilderNxt Prototype 0.9 Const $h_gui = GUICreate("Toy", 150, 140) Const $h_active_window_tracking = GUICtrlCreateCheckbox("Enabled", 10, 40, 60, 20) Const $h_active_window_tracking_zorder = GUICtrlCreateCheckbox("ZOrder", 10, 10, 70, 20) GUICtrlCreateLabel("Timeout:", 10, 70, 55, 20) Const $h_active_window_tracking_timeout = GUICtrlCreateInput('', 60, 67, 60, 20) Const $h_exit = GUICtrlCreateButton("Exit", 100, 100, 40, 30) #EndRegion #Region ; init gui Switch _get_tracking() Case True GUICtrlSetState($h_active_window_tracking, $GUI_CHECKED) Case False GUICtrlSetState($h_active_window_tracking, $GUI_UNCHECKED) EndSwitch Switch _get_zorder() Case True GUICtrlSetState($h_active_window_tracking_zorder, $GUI_CHECKED) Case False GUICtrlSetState($h_active_window_tracking_zorder, $GUI_UNCHECKED) EndSwitch GUICtrlSetData($h_active_window_tracking_timeout, _get_timeout()) GUISetState(@SW_SHOWNORMAL) #EndRegion _main_loop() Func _main_loop() Local $msg, $timeout Do $ctrl = GUIGetMsg() Switch $ctrl Case $h_active_window_tracking Select Case _if_checked($ctrl) MsgBox($MB_OK, "Checkbox1 State", GUICtrlGetState($ctrl)) _SysParamInfo($SPI_SETACTIVEWINDOWTRACKING, True) Case _if_unchecked($ctrl) MsgBox($MB_OK, "Checkbox1 State", GUICtrlGetState($ctrl)) _SysParamInfo($SPI_SETACTIVEWINDOWTRACKING, False) EndSelect Case $h_active_window_tracking_zorder Select Case _if_checked($ctrl) MsgBox($MB_OK, "Checkbox2 State", GUICtrlGetState($ctrl)) _SysParamInfo($SPI_SETACTIVEWNDTRKZORDER, True) Case _if_unchecked($ctrl) MsgBox($MB_OK, "Checkbox2 State", GUICtrlGetState($ctrl)) _SysParamInfo($SPI_SETACTIVEWNDTRKZORDER, False) EndSelect Case $h_active_window_tracking_timeout $timeout = GUICtrlRead($ctrl) _SysParamInfo($SPI_SETACTIVEWNDTRKTIMEOUT, $timeout) Case $GUI_EVENT_CLOSE, $h_exit ExitLoop EndSwitch Until False EndFunc Func _SysParamInfo(Const $action, Const $v_param) Return _WinAPI_SystemParametersInfo($action, 0, $v_param, $SPIF_UPDATEINIFILE) EndFunc Func _if_checked(Const $ctrl) Return BitAND(GUICtrlGetState($ctrl), $GUI_CHECKED) = $GUI_CHECKED EndFunc Func _if_unchecked(Const $ctrl) Return BitAND(GUICtrlGetState($ctrl), $GUI_UNCHECKED) = $GUI_UNCHECKED EndFunc Func _get_tracking() Local Const $tracking = DllStructCreate("bool") _WinAPI_SystemParametersInfo($SPI_GETACTIVEWINDOWTRACKING, 0, DllStructGetPtr($tracking)) Return DllStructGetData($tracking, 1) EndFunc Func _get_zorder() Local Const $zorder = DllStructCreate("bool") _WinAPI_SystemParametersInfo($SPI_GETACTIVEWNDTRKZORDER, 0, DllStructGetPtr($zorder)) Return DllStructGetData($zorder, 1) EndFunc Func _get_timeout() Local Const $timeout = DllStructCreate("dword") _WinAPI_SystemParametersInfo($SPI_GETACTIVEWNDTRKTIMEOUT, 0, DllStructGetPtr($timeout)) Return DllStructGetData($timeout, 1) EndFunc #EndRegion Edited March 3, 2015 by jaberwacky Helpful Posts and Websites: AutoIt3 Variables and Function Parameters MHz | AutoIt Wiki | Using the GUIToolTip UDF BrewManNH | Can't find what you're looking for on the Forum? Link to comment Share on other sites More sharing options...
Solution orbs Posted March 3, 2015 Solution Share Posted March 3, 2015 from the help of GUICtrlGetState(): As opposed to GUICtrlRead() this function returns ONLY the state of a control enabled/disabled/hidden/show/dropaccepted so use GuiCtrlRead(). jaberwacky 1 Signature - my forum contributions: Spoiler UDF: LFN - support for long file names (over 260 characters) InputImpose - impose valid characters in an input control TimeConvert - convert UTC to/from local time and/or reformat the string representation AMF - accept multiple files from Windows Explorer context menu DateDuration - literal description of the difference between given dates Apps: Touch - set the "modified" timestamp of a file to current time Show For Files - tray menu to show/hide files extensions, hidden & system files, and selection checkboxes SPDiff - Single-Pane Text Diff Link to comment Share on other sites More sharing options...
jaberwacky Posted March 3, 2015 Author Share Posted March 3, 2015 ::facesplalm:: *Sigh* One day I will not be so numb. Thank you! Helpful Posts and Websites: AutoIt3 Variables and Function Parameters MHz | AutoIt Wiki | Using the GUIToolTip UDF BrewManNH | Can't find what you're looking for on the Forum? 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