nacerbaaziz Posted June 28, 2019 Share Posted June 28, 2019 (edited) hello sirs, i've created a tool to the blind users, this tool helps the blind to listen to a audio effect when moving between the GUIs controls on they computers where this tool can get the class for the current focus control and play a sound from a folder i've added all the knowne classes, but i found some problems i hope any one can help me. this is the code that i created expandcollapse popup#include <WinAPISys.au3> Global $h_CurrentHWNDFocus = "", $h_CurrentControlHWNDFocus = "" AdlibRegister("WindowAudioFocus", 50) Func WindowAudioFocus() Local $h_NewHWNDFocus = WinGetHandle("[active]", "") Local $h_NewControlHWNDFocus = ControlGetFocus($h_NewHWNDFocus, "") If ($h_NewHWNDFocus = $h_CurrentHWNDFocus) And ($h_NewControlHWNDFocus = $h_CurrentControlHWNDFocus) Then Return 0 AdlibUnRegister("WindowAudioFocus") If Not ($h_NewHWNDFocus = $h_CurrentHWNDFocus) Then SoundPlay(@ScriptDir & "\focus_Audio\WindowChanged.wav") Else Switch _WinAPI_GetClassName(ControlGetHandle($h_NewHWNDFocus, "", $h_NewControlHWNDFocus)) Case "Button", "Start", "TrayButton", "TrayShowDesktopButtonWClass", "sbutton", "CirrussButton", "ODbcButton", "ThunderRTCommandButton", "ThunderSSOption", "ThunderSSCommand", "ThunderCommandButton", "ThunderRT6CommandButton", "ThunderRT5CommandButton", "TButton", "TBitBtn", "TAdvGlowButton", "ButtonWndClass", "afx:0:376:baa946", "_AOL_Button" If _IsCheckBox(ControlGetHandle($h_NewHWNDFocus, "", $h_NewControlHWNDFocus)) Then SoundPlay(@ScriptDir & "\focus_Audio\checkBox.wav") ElseIf _IsRadio(ControlGetHandle($h_NewHWNDFocus, "", $h_NewControlHWNDFocus)) Then SoundPlay(@ScriptDir & "\focus_Audio\radio.wav") Else SoundPlay(@ScriptDir & "\focus_Audio\button.wav") EndIf Case "ComboBox", "ComboBoxEx32", "MSOBALLOONREComboBox20W", "REComboBox20W", "ThunderComboBox", "ThunderDriveListBox", "ThunderRT6ComboBox", "TORComboEdit", "TCombobox", "TComboBoxEx", "TORComboBox", "TColorBox", "TNFComboBox", "Internet Explorer_TridentCmbobx", "ComboWndClass", "_AOL_ComboBox", "ThunderRT5ComboBox", "ComboLBox" SoundPlay(@ScriptDir & "\focus_Audio\list.wav") Case "Edit", "SearchBox", "TChatRichEdit", "_WwN", "_WwO", "RichEdit20A", "RichEdit20WPT", "RICHEDIT60W", "OKttbx", "RichEditA", "ThunderTextBox", "ThunderRT6TextBox", "ThunderRT5TextBox", "TEdit", "TRichEdit", "TRichEditViewer", "TMemo", "TInplaceEditList", "TLabeledEdit", "TMaskEdit", "TDateTimePicker", "TRichEdit", "TCaptionMemo", "TAddictRichEdit", "TCaptionEdit", "RichTextWndClass", "TextWndClass", "PasswordWndClass", "TextAreaWndClass", "MSWorksDoc", "_AOL_Edit", "SysDateTimePick32" SoundPlay(@ScriptDir & "\focus_Audio\edit.wav") Case "ListBox", "ComboLBox", "REListBox20W", "SUPERGRID", "OUTEXVLB", "WMSUIVLB", "SchdmapiVLB", "VLBClass", "ThunderDirListBox", "ThunderFileListBox", "ThunderListBox", "ThunderRT6ListBox", "ThunderRT5ListBox", "TListbox", "TValueListEditor", "TORCalendar", "TColorListBox", "TCheckListBox", "Internet Explorer_TridentLstBox", "ListBoxWndClass", "ListWndClass", "hh_kwd_vlist", "afx:8:376:0:946", "_AOL_ListBox", "_AOL_Tree", "" SoundPlay(@ScriptDir & "\focus_Audio\List.wav") Case "SysListView32", "OpenListView", "wuDuiListView", "ListView20WndClass", "TcxGridSite", "TListView", "TSystemListView", "ListViewWndClass", "" SoundPlay(@ScriptDir & "\focus_Audio\ListView.wav") Case "SysTreeView32", "SearchTreeList", "FeatureTree", "TreeView20WndClass", "TSystemTreeView", "TTreeView", "" SoundPlay(@ScriptDir & "\focus_Audio\TreeView.wav") Case Else SoundPlay(@ScriptDir & "\focus_Audio\focus.wav") EndSwitch EndIf $h_CurrentHWNDFocus = $h_NewHWNDFocus $h_CurrentControlHWNDFocus = $h_NewControlHWNDFocus AdlibRegister("WindowAudioFocus", 50) Return 1 EndFunc ;==>WindowAudioFocus Func _IsCheckBox($ctrl_hwnd) $Style = _WinAPI_GetWindowLong($ctrl_hwnd, $GWL_STYLE) Return BitAND($Style, $BS_CHECKBOX) = $BS_CHECKBOX EndFunc ;==>_IsCheckBox Func _IsRadio($ctrl_hwnd) $Style = _WinAPI_GetWindowLong($ctrl_hwnd, $GWL_STYLE) Return BitAND($Style, $BS_AUTORADIOBUTTON) = $BS_AUTORADIOBUTTON EndFunc ;==>_IsRadio what i need from you is : play a sound when a menu item focus, that sound named menu.wav play a sound named items.wav when the users move on list box items or list view or treeview items or a combobox items please if can any one help me i'll very happy thanks on advance Edited June 28, 2019 by nacerbaaziz Link to comment Share on other sites More sharing options...
FrancescoDiMuro Posted June 29, 2019 Share Posted June 29, 2019 @nacerbaaziz Post a runnable script so we can help you from there Click here to see my signature: Spoiler ALWAYS GOOD TO READ: Forum Rules Forum Etiquette Link to comment Share on other sites More sharing options...
nacerbaaziz Posted June 29, 2019 Author Share Posted June 29, 2019 here is the the code as a au3 with the audio files i hope that any one can help me focus_Audio.zip Link to comment Share on other sites More sharing options...
Bert Posted June 29, 2019 Share Posted June 29, 2019 May I make a simple suggestion: When building stuff like this, start small and only use a few classes. Get that working, Then add a class, test again. Once you get that test to pass, save that copy of the script then repeat the cycle. This way when something goes wrong, you have a MUCH simpler time trying to figure out what is broke. Right now you have a large script and I have no idea what the problem is or what is not working. The Vollatran project My blog: http://www.vollysinterestingshit.com/ Link to comment Share on other sites More sharing options...
nacerbaaziz Posted June 29, 2019 Author Share Posted June 29, 2019 sir, i haven't any problem, i wanna add a futures and i asked for the help. what i need is to get the menu item focus to play a sound, and get list items and comboboxes item focus and play a sound when navigating. if any one can help me i'll very happy Link to comment Share on other sites More sharing options...
FrancescoDiMuro Posted June 30, 2019 Share Posted June 30, 2019 @nacerbaaziz For the various Focus/Hover events on those controls, you may take a look at WM_COMMAND and WM_NOTIFY handlers. These two handlers "capture" messages sent from or to the various controls in a GUI (click, double click, drag, and so on), and you can use them to make some fun things. For example, there is a Notification Code (so are called) that is sent by a ListView when you hover on an item, which is called $LVN_HOTTRACK. You could use it to do what you need. There are plenty samples on the Forums; just take a look at and play with them Click here to see my signature: Spoiler ALWAYS GOOD TO READ: Forum Rules Forum Etiquette Link to comment Share on other sites More sharing options...
nacerbaaziz Posted July 1, 2019 Author Share Posted July 1, 2019 hello again i search allot and at the end i found the WM_menuSelect when i tried it in a internal GUI it worked but i did not know how to use it with the External Windows here is the code that i tried #include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> #include <WindowsConstants.au3> $menuGUI = GUICreate("menu") $menuFile = GUICtrlCreateMenu("&file") $menuOpen = GUICtrlCreateMenuItem("&Open", $menuFile) $menuGo = GUICtrlCreateMenuItem("&get", $menuFile) GUISetState() GUIRegisterMsg($WM_MENUSELECT, "WM_MENUSELECT") While 1 Switch GUIGetMSG() case "-3", 3 exit EndSwitch Wend Func WM_MENUSELECT($hWnd, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg, $wParam, $lParam soundPlay("focus_Audio\menu.wav") EndFunc ;==>WM_COMMAND i hope that any one can help me to do that Link to comment Share on other sites More sharing options...
nacerbaaziz Posted July 3, 2019 Author Share Posted July 3, 2019 hello sirs, please help me because i wanna create this tool before return back to school Link to comment Share on other sites More sharing options...
Nine Posted July 3, 2019 Share Posted July 3, 2019 I believe you are looking for this : _WinAPI_WindowFromPoint “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Screen Scraping Link to comment Share on other sites More sharing options...
nacerbaaziz Posted July 3, 2019 Author Share Posted July 3, 2019 HELLO SIR @Nine . can you tell me how i can use it with my tool please greetings Link to comment Share on other sites More sharing options...
Nine Posted July 3, 2019 Share Posted July 3, 2019 Look help file, it gives a good example how to use it... “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Screen Scraping Link to comment Share on other sites More sharing options...
nacerbaaziz Posted July 3, 2019 Author Share Posted July 3, 2019 (edited) hello sir @Nine , i find this, but i couldn't know how to use it to get the menu focus or the listView items when changed. that what i can't do. am sure that it posible because the screen readers do that. i hope you can help me, because i will add a new wey for the blind to navigate their computers. i am making a tool that add a shortCut keys to move Between the different classes, also it play a sount to each different control #include <WinAPISysWin.au3> HotKeySet("{ESC}", "Close") ; Set ESC as a hotkey to exit the script. Global $g_tStruct = DllStructCreate($tagPOINT) ; Create a structure that defines the point to be checked. Example() Func Example() Local $hWnd While 1 ToolTip("") Position() ; Update the X and Y elements with the X and Y co-ordinates of the mouse. $hWnd = _WinAPI_WindowFromPoint($g_tStruct) ; Retrieve the window handle. ToolTip($hWnd) ; Set the tooltip with the handle under the mouse pointer. Sleep(100) WEnd EndFunc ;==>Example Func Position() DllStructSetData($g_tStruct, "x", MouseGetPos(0)) DllStructSetData($g_tStruct, "y", MouseGetPos(1)) EndFunc ;==>Position Func Close() Exit EndFunc ;==>Close i hope that you can help me greetings Edited July 3, 2019 by nacerbaaziz Link to comment Share on other sites More sharing options...
Nine Posted July 3, 2019 Share Posted July 3, 2019 After you get the $hWnd you can use any other function like _WinAPI_GetClassName “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Screen Scraping Link to comment Share on other sites More sharing options...
nacerbaaziz Posted July 3, 2019 Author Share Posted July 3, 2019 1 hour ago, Nine said: After you get the $hWnd you can use any other function like _WinAPI_GetClassName i got the class and all controls worked fine but the problem with the menus and the lists items i couldn't get the focus on them Link to comment Share on other sites More sharing options...
junkew Posted July 7, 2019 Share Posted July 7, 2019 Take a deep look in the iuiautomation thread and examples it will recognize more and gives you the handlers for getfocus, changefocus. See faq31 for links. FAQ 31 How to click some elements, FAQ 40 Test automation with AutoIt, Multithreading CLR .NET Powershell CMDLets 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