How can I fire a key press or mouse click event without touching any input device at system level?

后端 未结 4 2300
小鲜肉
小鲜肉 2020-12-14 05:15

How can I fire an automatic key press or mouse click event when a color appears on the screen on other application or browser?

相关标签:
4条回答
  • 2020-12-14 05:23

    I'm not 100% sure what you want, but if all you are after is running the method linked the the button.Clicked event, then you can manually run the method just like any other method.

    0 讨论(0)
  • 2020-12-14 05:23

    You can use the .NET SendKeys class to send keystrokes. Emulating mouse clicks requires P/Invoke. I don't know how to detect colors on the screen.

    0 讨论(0)
  • 2020-12-14 05:34

    when a color appears on the screen on other application or browser

    I made one program using OpenCV and C++ for operating mouse with finger gesture. I used 3 color strips for 3 mouse function.

    • Yellow color for Left click
    • Blue color for Right click
    • Pink color for controlling cursor position

    Whenever camera detect these colors, associated function takes place, I have used mouse_event for performing mouse function. For more information you may read my code, blog, video.

    0 讨论(0)
  • 2020-12-14 05:35

    It depends a lot on what you want. Do you want to send the keys to

    • your Application
    • another fixed Application
    • Simulate a global keypress

    Simulating keys globally

    All of these will cause problems targeting a specific application and the active window changes.

    • SendKeys Sends Messages to the active app. It's a high level function taking a string which encodes a sequence of keys.

    • keybd_event is very low level and injects a global keypress. In most cases SendKeys is easier to use.

    • mouse_event simulates mouse input.

    • SendInput supersedes these functions. It's more flexible but a bit harder to use.

    Sending to a specific window

    When working with a fixed target window, sending it messages can work depending on how the window works. But since this doesn't update all states it might not always work. But you don't have a race condition with changing window focus, which is worth a lot.

    • WM_CHAR sends a character in the basic multilingual plane (16 bit)
    • WM_UNICHAR sends a character supporting the whole unicode range
    • WM_KEYDOWN and WM_KEYUP Sends keys which will be translated to characters by the keyboard layout.

    My recommendation is when targeting a specific window/application try using messages first, and only if that fails try one of the lower level solutions.

    0 讨论(0)
提交回复
热议问题