I’ve created a form that’s maximized over the entire screen.
Within that form, and sized to fill the entire form, I’ve placed a panel with background color set to Red. The form’s TransparencyKey is set to Red.
Therefore, the Panel is like a “keyhole” – you can see the desktop that’s directly underneath it.
When the user clicks on the panel, OR, presses a key on the keyboard, I want to take action.
But, because the panel is completely transparent, when it is clicked or a key is pressed, nothing happens. If I make the panel non-transparent (setting it’s background color to Blue, for example), it does respond to clicks.
What’s the best way to get the panel to respond to clicks and keypresses?
Do I have to hook all mouse an keyboard events on the entire system or is there a simpler way?
I’ve discovered that I can use
GetAsyncKeyStateto respond to both keypresses and mouse clicks.Then, I can call
GetAsyncKeyState(Keys.LButton)andGetAsyncKeyState(Keys.Escape), for example. Much simpler than hooking all keyboard and mouse events.