Kill NVDA Remotely: remotely restart the NVDA screen reader

Started by Quin, February 21, 2025, 10:48:33 AM

Previous topic - Next topic

Quin

A friend of mine added the ability to customize the packet string used for communication, and I added a system tray icon to the server for exiting without taskkill/STOP.

Quin

This isn't BCX related exactly, but I thought at least someone here might find it interesting.
Sometimes, when controlling computers over a remote connection as a blind person, your screen reader can crash, leaving you with a completely unusable system. As such, I wrote this simple set of C programs to restart the remote NVDA (my and many other technical blind user's screen reader of choice), thus reestablishing your remote connection if configured.
This is 100% pure WinAPI C code, with no reliance on the CRT. The network communication is handled with winsock, so this could be a good jumping off point for someone wanting to learn how that works. The build system is CMake, so you can use any toolchain you like to build it. I've tested it with both MSVC and winlibs' MinGW distribution.
MSVC 2022 gives me a 12 KB client binary and a 15 KB Server, while MinGW64 gives me a 70 KB Client and a 73 KB server. Not bad in either case, and the difference in size between the client and server seems to stay consistent, although MSVC definitely takes the cake.
Link: https://github.com/thequinbox/kill-nvda-remotely
Enjoy!