如果用户按Control + F
,我需要从应用程序的所有打开窗口启动一个新的搜索表单。
目前我正在使用windows user32.dll方法注册一个热键,我想在我的应用程序中显示如下:
// Registers a hot key with Windows.
[DllImport("user32.dll")]
private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);
// Unregisters the hot key with Windows.
[DllImport("user32.dll")]
private static extern bool UnregisterHotKey(IntPtr hWnd, int id);
这种方法的问题是,即使选择了不同的应用程序(如Web浏览器),也会启动快捷方式。
我试过将KeyPreview
设置为true来使用MainForm_KeyDown
,但它只适用于主窗体。我也试过重写ProcessCmdKey
,但同样,它只适用于主窗体。
我在想,也许UI自动化库提供了监视输入的支持。否则,是否有可能在Windows热键注册中添加一个过滤器,使其只对我的应用程序的进程ID有效?
1条答案
按热度按时间xkftehaa1#
据我所知,你有这些要求:
实现
IMessageFilter
应该能够有效地实现以下目标: