Jump to content
nacerbaaziz

nvdaControllerClient_UDF (to control the free NVDA screen reader)

Recommended Posts

nacerbaaziz


Hi dear
This is the first include file I designed
This work is especially directed to NVDA free screen reader users
It contains a set of functions that enable you to control the program
Such as forcing the program to read a custom text
Force it to stop talking
Find out if the program is running
And show custom text in the Braille screen
Available functions are
_nvdaControllerClient_Load()
to load the dll file
_nvdaControllerClient_free()
to UnLoad the dll file
_nvdaControllerClient_SpeakText()
to speak a custom text
_nvdaControllerClient_brailleMessage()
to show custom text in the Braille screen
_nvdaControllerClient_cancelSpeech()
to Force the NVDA  to stop talking
_nvdaControllerClient_testIfRunning()
to check if the NVDA is running

important note :
All of these functions depend on a nvdaControllerClient32.dll

I've added it in the attachments, as well as a file for examples, and other files
As the source and examples in other languages
For those who wanted to download the free screen reader, this is the download link from the official website
https://www.nvaccess.org/download/
i hope you like this topic
I hope you will try it and give me your opinions

Thank you all members and administrators for their help
now with the  Attachments

 

nvdaControllerClient_UDF.zip

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • TheAutomator
      By TheAutomator
      Is there a (simple) way to make your script using a picture-control to resize the gui?
      This would be useful for a transparant pop-up window with a custom made theme using picture controls:
      $Form = GUICreate('', 301, 173, 5, 5, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST)) GUICtrlCreatePic(@scriptdir & "\resize_win.bmp", 0, 73, 20, 51) ; some api call or code telling the os to use this picture as a resize border GUICtrlSetResizing(-1, $GUI_DOCKLEFT+$GUI_DOCKTOP+$GUI_DOCKBOTTOM+$GUI_DOCKWIDTH+$GUI_DOCKHEIGHT) GUISetState(@SW_SHOW) While True if GUIGetMsg() = $GUI_EVENT_CLOSE then Exit WEnd  
      EDIT: to make it more clear what i wanna do, if you go with the mouse arrow over the border of a re-sizable window the arrow changes to a "resize" arrow, you click and drag the border and then the window size adjusts to the mouse position until you release the mouse button.
      I want my picture control to be used the same way as the resize border to resize my window.
    • ur
      By ur
      An application is there which is created using vc++,mostly mfc.
       
      DOn't know the details completely.
       
      WHen I try to automate the control clicks for testing the UI.
      THe below control is not detected.
      As you can see, during UI operations I can click the elements one by one.
      But all the elements is selected as a whole set, when I use the Windowinfo tool.

       
      How to click this using AutoIT.?
       
      Please suggest.
    • nacerbaaziz
      By nacerbaaziz
      Hello, dear.
      I am a newbie in autoit language
      I don't master any other programming language.
      I also don't understand how to manage the DLL files
      In addition to all this I am blind, and as we all know the explanations provided for the blind in programming are very few.
      So I'm trying to rely on myself for learning.
      I work hard to design some simple software and tools that make it easier to use computers, as they perform some tasks that may be difficult for the blind.
      I am also looking for the programs that the blind need and cannot use it because it's haven't the compatibility with the screen reader, and i try to design a simple programs that do the same work.
      In these tools and programs I have to deal directly with screen readers, when i must to forcing these programs to read some processes and tasks that it cannot be read in normal mode.
      To force these programs to read, I have to deal with the API files.
      And as I said, I'm very weak in managing DLLs.
      So I hope you'll try to help me, please.
      I did a lot of research until I found the API file to manage the free screen reader (NVDA).
      It is open source
      It is based on CPP language and Python
      And I don't understand the both languages.
      For this I decided to put you an API file link here which is attached with it examples, source and DLL file
      I hope you can help me by convert these functions to AutoIt include file
      I offer you a very serious apology if the participation is a violation of the laws.
      I wish I could find here someone to help me.
      To download the file please click on this link
      http://www.nvda-project.org/nvdaControllerClient/nvdaControllerClient_20100219.7z
      and To download the free screen reader,  please following this link
      https://www.nvaccess.org/download/

      I repeat my apologies and thanks in advance.
       
    • RHolmes
      By RHolmes
      I wrote a script a few months ago that was working at the time. When I tried it today it wouldn't retrieve any controls.  The application successfully launches, but I cannot figure out how to retrieve the control from the window that is launched. I'm on a windows 10 machine using AutoIt v3.3.14.2. The only thing I can think of that has changed is windows updates? Code is below, any help is greatly appreciated.    ; Notes: ; HandleError( handleToCheck, MsgToLogOnFailure, terminateAutoItOnFail ) : function that simply checks the handle and quits AutoIt if not present ; all of this works well FileChangeDir( $CLIENT_APPLICATION_DIR ); Run( "Client.exe" ) Local $hClient = WinWaitActive( $CLIENT_TITLE, "", 10 ) $terminateOnFail = 1 HandleError( $hClient, "LaunchClient::Error: Failed to launch client. Either timed-out or failed.", $terminateOnFail ) LogToFile( "Client launched, waiting for system to ready." ) Sleep( 5000 ) ; this part does not work ; $SYSTEM_INDICATOR is a global variable. I have tried these values: "SystemIndicatorWindow" (Text), "Qt5QWindowIcon101" (ClassNN), and ; "[CLASS:Qt5QWindowIcon; INSTANCE:101]" Local $hStatusIndicator = ControlGetHandle( $hClient, "", $SYSTEM_INDICATOR ) HandleError( $hStatusIndicator, "CheckStatus::Error: couldn't retrieve control: " & $SYSTEM_INDICATOR, $terminateOnFail ) This is what the spy reveals: 

       
      Edit: I just tried this code and it works for notepad++.
      FileChangeDir( "C:\Program Files\Notepad++\" ); Run( "notepad++.exe" ) Local $hNotePad = WinWaitActive( "new 1 - Notepad++", "", 10 ) If $hNotePad = 0 Or $hNotePad = -1 Then MsgBox( $MB_SYSTEMMODAL, "Error", "Error getting app handle." ) EndIf Sleep( 1000 ) Local $hNewFileBtn = ControlGetHandle( $hNotePad, "", "[CLASS:ToolbarWindow32; INSTANCE:1]" ) If $hNewFileBtn = 0 Or $hNewFileBtn = -1 Then MsgBox( $MB_SYSTEMMODAL, "Error", "Error getting button handle." ) EndIf MsgBox( $MB_SYSTEMMODAL, "Success", "Success." )  
×