当我在C++中注册热键(本例中为PrtScn键)时,我注意到原始功能丢失了。按键不再捕捉屏幕图像。有没有一种方法可以在不破坏现有绑定的情况下注册热键?
问题背景:我正在尝试创建一个应用程序,以帮助我们的测试团队自动化他们的截屏任务。当用户单击PrtScn/Alt+PrtScn键时,我想运行一个小应用程序,它可以拾取剪贴板上的图像并将其推入文档。这个应用程序的大部分都是Java,但我不得不使用C++来注册热键。
谢谢你的帮助!!
这是我用来注册热键的代码:
RegisterHotKey(NULL, 1, MOD_ALT | MOD_NOREPEAT, VK_SNAPSHOT);
RegisterHotKey(NULL, 2, MOD_NOREPEAT, VK_SNAPSHOT);
while (GetMessage(&msg, NULL, 0, 0) != 0)
{
if (msg.message == WM_HOTKEY)
{
WinExec(" The Java Application ", SW_SHOWNORMAL);
}
}
我认为没有任何成文的方法可以通过编程触发操作系统的打印屏幕功能。我确实有一些想法你可以试试:
- 自己实现复制到剪贴板的功能,或者
- 一旦您的热键被触发,请暂时注销热键并使用
SendInput()
重新发送按键(诚然,这有点笨拙),或者 - 完全放弃热键方法,而是使用
SetClipboardViewer()
等注册剪贴板查看器
对我来说,最后一个想法似乎是最好的——当剪贴板内容更改时,你会收到通知,然后很容易看出剪贴板上的格式是否是图像。