2013-08-24 24 views
3

當我在C++中註冊熱鍵(本例中爲PrtScn鍵)時,我注意到原來的功能丟失了。該鍵不再捕捉屏幕的圖像。有沒有辦法在不破壞現有綁定的情況下注冊熱鍵?C++ RegisterHotKey無需重寫現有功能

問題上下文:我正在嘗試創建一個應用程序來幫助我們的測試團隊自動執行截取屏幕的任務。當用戶點擊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); 
    } 
} 

回答

2

我不認爲有以編程方式觸發操作系統的打印屏幕功能的任何記錄方式。我有一些想法,你可以嘗試:

  1. 自己實現複製到剪貼板功能,或
  2. 一旦你的熱鍵被觸發,暫時註銷熱鍵,並使用SendInput()重新發送按鍵(這是無可否認的一點缺憾),或
  3. 完全放棄熱鍵方法,而是使用登記等SetClipboardViewer()

要我過去的想法似乎是最好的剪貼板查看器 - 你就會收到通知時,剪貼板內容改變和那麼很容易看到剪貼板上的格式是否是圖像。

+0

謝謝喬納森!這工作! – vikas