C++;不覆盖现有功能的RegisterHotKey 当我在C++中登记一个热键(在这种情况下是PRTSCN键)时,我注意到原来的功能丢失了。该键不再捕获屏幕的图像。有没有一种方法可以在不破坏现有绑定的情况下注册热键

C++;不覆盖现有功能的RegisterHotKey 当我在C++中登记一个热键(在这种情况下是PRTSCN键)时,我注意到原来的功能丢失了。该键不再捕获屏幕的图像。有没有一种方法可以在不破坏现有绑定的情况下注册热键,c++,winapi,printscreen,registerhotkey,C++,Winapi,Printscreen,Registerhotkey,问题背景:我正在尝试创建一个应用程序来帮助我们的测试团队自动化截图任务。当用户单击PrtScn/Alt+PrtScn键时,我想运行一个小应用程序,在剪贴板上拾取图像并将其推送到文档中。这个应用程序大部分是java,但是我必须到C++注册一个热键。< /P> 谢谢你的帮助 这是我用来注册热键的代码: RegisterHotKey(NULL, 1, MOD_ALT | MOD_NOREPEAT, VK_SNAPSHOT); RegisterHotKey(NULL, 2, MOD_NOREPEAT,

问题背景:我正在尝试创建一个应用程序来帮助我们的测试团队自动化截图任务。当用户单击PrtScn/Alt+PrtScn键时,我想运行一个小应用程序,在剪贴板上拾取图像并将其推送到文档中。这个应用程序大部分是java,但是我必须到C++注册一个热键。< /P> 谢谢你的帮助

这是我用来注册热键的代码:

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()
    等注册剪贴板查看器
  • 对我来说,最后一个想法似乎是最好的-当剪贴板内容发生变化时,您会得到通知,然后很容易看到剪贴板上的格式是否为图像