【发布时间】:2012-05-24 18:14:28
【问题描述】:
如何在旧程序中单击鼠标时模拟击键。笔记!程序可能不知道鼠标被点击了
我正在尝试
IntPtr module = LoadLibrary("user32.dll");
_mouseHookHandle = (HookType.MouseLowLevel, _mouseDelegate, module, 0);
并测试从HookProc 返回 -1。但是当我这样做时,SendInput 不会将我的输入发送到应用程序。
如果我从CallNextHookEx 返回结果,SendInput 有效,但随后鼠标点击被发送到遗留应用程序。
背景
我们有一个由特殊键盘控制的程序。当按下键盘上的一个键时,它会发送一系列 ESC 和字母。然后程序会根据鼠标在屏幕上的位置执行操作。
我正在开发一个屏幕键盘,这样您就可以在没有这个特殊键盘的情况下控制应用程序。用户用鼠标选择屏幕键盘上的按钮。然后用户将鼠标指针移动到他想向其发送突击队的对象,然后再次单击。 但这就是说,鼠标点击可能不会传递给程序,程序在鼠标点击时执行另一个操作。
【问题讨论】:
-
你需要 pinvoke GetForegroundWindow + GetWindowThreadProcessId 来找出哪个进程有焦点。
标签: c# winapi hook uikeyboard keyboard-hook