I have my accessibility application (an on-screen keyboard) mostly working from following the information in the above link. It starts up for logon and after logon (at the "desktop"). But I do have some problems.
BOOL fAlreadyInJob;
BOOL fSuccess = IsProcessInJob(GetCurrentProcess(), NULL, &fAlreadyInJob);
If the accessibility application is configured to run outside of a job, it should notify the Ease of Access Center that the application is starting and continue as normal.
Regardless of how the application is configured, if it provides a way to exit from within the application, such as a Close button, the application must notify the Ease of Access Center that it is exiting.
An application notifies the Ease of Access Center by setting a temporary registry key and then injecting the Windows Logo key + U key combination into the input stream.
The application should create the temporary key at the following location.
HKCU\Software\Microsoft\Windows NT\CurrentVersion\AccessibilityTemp
The temporary key should have the same name as the registered application name, such as "Contoso_Screen Reader_v1.0". The value of the key is a DWORD set to 0x0003 when it is starting, or 0x0002
when the application is exiting."
My application runs as a "job". If it checks IsProcessInJob, then injects Windows+U, then exits the user is left staring at the Ease of Access. I put the proper values at the key specified. Why?
From: "Transferring secure desktop settings
If your accessibility application supports the secure desktop, you can use the registry to copy settings when the application transitions to the secure desktop. Copying settings helps makes the transition to the secure desktop more seamless for the user.
To copy settings, set the application's CopySettingsToLockedDesktop registry key to 1, and store the settings in the following registry location.
HKCU\Software\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig\<AT Key Name>
The Ease of Access Center monitors this registry location while the application is running. When a transition to the secure desktop occurs, the Ease of Access Center copies the settings to the same location in the secure desktop’s HKCU hive. The application can then read the settings and resume its state."
My app does support secure desktop. Again, this does not behave as documented. I save my settings as per the above but when switched to secure desktop the settings are not there to be read. It appears they are not copied, why?
And finally, from: "Running at installation and on the logon desktop
If you append your accessibility application's registered key name to the string at the following registry location, Windows will launch your application immediately after it is installed. Also, Windows will automatically run your application whenever the logon desktop is active.
HKCU\Software\Microsoft\Windows NT\CurrentVersion\Accessibility\Configuration
The Configuration key is a comma-delimited string. To add your application, append a string that is the same as your application's registry key at HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\ATs\."
The above does not "launch my application immediately after it is installed". Why?
Are there any working examples of this registration process?
Thanks for any help!