3

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

1 回答 1

2

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

  1. 自己实现复制到剪贴板功能,或者
  2. 一旦你的热键被触发,暂时取消注册热键并用于SendInput()重新发送按键(这确实有点笨拙),或者
  3. 完全放弃热键方法,而是使用SetClipboardViewer()等注册剪贴板查看器。

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

于 2013-08-24T05:52:03.753 回答