kill sticky keys window in VB

hows it

I need to find away to either disable sticky keys only while my program is running, or kill the process before it has a chance to pop up on top. At this stage I would even settle for hiding the window.
I have been searching for a couple of days and so far all I have come up with is to disable it in the registry, which requires a reboot or possibly a log off for it to take effect, so that’s no good.
The program is written in VB 6 and will be running on xp (maybe 2k if it works sweet).

Any help will be much appreciated

Cheers
geno
G3NOCIDEAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
DiscofishConnect With a Mentor Commented:

I noticed that if you change the setting for stickey keys from the control panel  Accessibility Options [keyboard tab] [stickyKeys box] -> settings button that will disable it right away.  If you could figure out what API calls you need to acomplish this, you'd be set.

Discofish
0
 
DiscofishCommented:
You'll need to set a key in the registry.

HKEY_CURRENT_USER\Control Panel\Accessibility\StickeyKeys\Flags

Set it to 506.  You might have to restart the computer, not sure on this one. You'll need the win32 API registry functions to do this. There should be a text file somewhere in the Visual Studio installation that details the API fucntions (VPAPI.txt or something like that).  I think the following will do it for you.  Check the msdn for explanations.

Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" ( _
    ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _
    ByVal samDesired As Long, ByRef phkResult As Long) As Long


Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" ( _
    ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, _
    ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long


Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
    ' Note that if you declare the lpData pa
    '     rameter as String in RegSetValueEx, you
    '     must pass it ByVal.


Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" ( _
    ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, _
    ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long


Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" ( _
    ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long


Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" ( _
    ByVal hKey As Long, ByVal lpValueName As String) As Long


Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" ( _
    ByVal hKey As Long, ByVal lpSubKey As String) As Long


0
 
DiscofishCommented:
0
 
G3NOCIDEAuthor Commented:
i have already tried doing it in the registry, and the effects dont happen until a reboot or login. which is no good because i need sticky keys to disable only when my program is running. I cant expect the user to reboot all the time so they can use sticky keys if the have to.

cheers
geno  
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.