开发者

Keydown event when the form is not active

How can I capture the Keydown event of a form th开发者_运维知识库at is not active?

I found references to ProcessKeyDown but I couldn't find any help on that.


Please set KeyPreview of the form to true. First select form and press f4 key, it will open property window and their is KeyPreview and set it to true.


Right cilck on the form and cilck properties, then there will be flash button , it is for events for that object. Find thier Keypress event. just doulbe click on the column corresponding to that event. It will create event for keypress.

For the documentation and help, check this link.


Keypress events are only sent to Controls that have input focus. You can use the Control.HasFocus property to determine whether your Control has focus or not. Use the Control.Focus() method to give your control focus.


You can set a low level keyboard hook using SetWindowsHookEx() to listen for key press events.


If what you want to do is trigger some code in your program upon keys being pressed in the operating system regarding of whether the form is active or not then you can use the method described in this article:

Processing Global Mouse and Keyboard Hooks in C#

Here is a simple example of a program using that library to simulate a virtual mouse by pressing the numeric keys on the numpad. '1'-'4' and '6'-'9' are directional keys, '5' is left click, '0' is double click.

Program.cs

Form1.cs

Observe that i didn't call the Application.Run(); with a new Form1() parameter so that the application would run but will not be visible on screen. To end the program you have to press CTRL+SHIFT+ESC, go to Processes page and end the process manually.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜