C ++ RegisterHotKey而不覆盖现有功能

时间:2013-08-24 05:21:06

标签: c++ winapi printscreen registerhotkey

当我在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);
    }
} 

1 个答案:

答案 0 :(得分:2)

我认为没有任何记录方式以编程方式触发操作系统的Print Screen功能。我确实有一些你可以尝试的想法:

  1. 自行实施复制到剪贴板功能,或
  2. 触发热键后,暂时取消注册热键并使用SendInput()重新发送按键(这无疑是有点笨拙的),或者
  3. 完全删除热键方法,而是使用SetClipboardViewer()
  4. 注册剪贴板查看器

    对我而言,最后一个想法似乎是最好的 - 当剪贴板内容发生变化时,您会收到通知,然后很容易看出剪贴板上的格式是否是图像。