[英]Capturing active window title failed when WPF application's control focused
[英]Sending paste message to active window's focused control
我想拦截一个热键(特别是CTRL V
),它将以某种方式与我的应用程序进行交互。 我可以使用RegisterHotKey
方法全局注册热键。 当我按CTRL V
我希望焦点WM_PASTE
窗口/控件也接收WM_PASTE
消息。 我尝试通过SendMessage
将其发送,但似乎没有用。 最后,我最终取消了注册热键,将^v
发送到当前窗口,然后重新注册了热键。
private static void Hook_KeyPressed(object sender, KeyPressedEventArgs e)
{
_hook.KeyPressed -= Hook_KeyPressed;
_hook.Dispose();
SendKeys.Send("^v");
_hook = new KeyboardHook();
_hook.RegisterHotKey(global::ClipMaster.ModifierKeys.Control, Keys.V);
_hook.KeyPressed += Hook_KeyPressed;
}
这可以解决问题,但是会阻塞鼠标(和窗口)约半秒钟。 我也担心它不能在某些应用程序中使用,尽管我不知道我能举什么例子。
我不确定您要使用该钩子实现什么目标,因为无法从代码示例中理解它。
假设您出于审核原因(或监视排序)而这样做,建议您查看WM_HOTKEY消息的返回值。 它可以“说”该消息未处理,因此允许其他逻辑(例如,其他挂钩)对Ctrl-V进行进一步处理。 另外,我建议使用比已知时间问题的SendKeys类更多的方法重新发送Ctrl-V。 您是否考虑过发布一条消息?
通过使用较低级别的按键进行挂钩,我还找到了另一种挂钩方法 。
让我知道是否有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.