2015-11-03 69 views
-1

我有大幹快上的熱鍵(應該運行,只是它給前)調用,剪貼板數據發送到使用文本框的一個MFC應用程序,如何使用熱鍵複製外部應用程序中的文本?

SendMessage(hWnd,WM_PASTE,0,0); 

一切工作正常至今。

我們得到了新的要求,我們應該能夠使用熱鍵將選定的文本複製到剪貼板(而不使用Ctrl + C),然後啓動我們的應用程序。

我試過用SendMessage(WM_COPY),但是不起作用。

請建議如何在剪貼板上獲取任何其他應用程序的選定文本。

+0

的SendMessage接受一個窗口作爲它的第一個參數。你在你的代碼中省略了。你的問題非常缺乏細節。我們無法分辨你做錯了什麼?您是否使用剪貼板傳輸文本?即使用戶是爲了控制剪貼板。 –

+0

是的,問題是非常缺乏細節。 – user1

+0

您的新要求'我們應該使用熱鍵<...>'<...>',然後啓動我們的應用程序'有一個問題:*如果您的應用程序尚未運行,*世衛組織*正在處理您的熱鍵? –

回答

1

最後我自己得到了答案。

我不得不使用SendInput,下面是示例代碼,

INPUT ip; 
// Set up a generic keyboard event. 
ip.type = INPUT_KEYBOARD; 
ip.ki.wScan = 0; // hardware scan code for key 
ip.ki.time = 0; 
ip.ki.dwExtraInfo = 0; 

// Press the "Ctrl" key 
ip.ki.wVk = VK_CONTROL; 
ip.ki.dwFlags = 0; // 0 for key press 
SendInput(1, &ip, sizeof(INPUT)); 

// Press the "C" key 
ip.ki.wVk = 'C'; 
ip.ki.dwFlags = 0; // 0 for key press 
SendInput(1, &ip, sizeof(INPUT)); 

// Release the "C" key 
ip.ki.wVk = 'C'; 
ip.ki.dwFlags = KEYEVENTF_KEYUP; 
SendInput(1, &ip, sizeof(INPUT)); 

// Release the "Ctrl" key 
ip.ki.wVk = VK_CONTROL; 
ip.ki.dwFlags = KEYEVENTF_KEYUP; 
SendInput(1, &ip, sizeof(INPUT)); 
+1

你真的應該將這四個輸入事件綁定到一個SendInput()調用中,以確保它們不與其他鍵盤事件交錯。想象一下你按下Ctrl +?要調用熱鍵處理程序,它會發送Ctrl DOWN事件,此時您釋放了Ctrl鍵(將Ctrl UP插入到隊列中),取消您的操作。 –

相關問題