How to press the Windows button programmatically using C# SendKeys

PentaPenguin picture PentaPenguin · Sep 17, 2009 · Viewed 7.5k times · Source

Basically I want to simulate in code a user clicking on the windows button. I know there is SendKeys which allows me to send key presses to windows if I get a handle to them, but what I can't figure out is what I need to get a handle on in order to send Windows button commands. E.g. Windows Button + L. Having read into this a bit it appears that CTRL-ESC should pop up the Start Menu also but not sure how to tell it to send the keys to Windows (if this is even possible). Any help would be much appreciated.

Cheers!

Answer

Dale picture Dale · Sep 17, 2009

I don't think you can do this using SendKeys, you will need to p/invoke to an API function instead, probably keybd_event to send either CTRL+ESC or the Windows key.

Here is an example of opening the start menu this way in VB and here is keybd_event with its C# signature on pinvoke.net.