我可以在不使用剪貼板的情況下從另一個應用程序中獲取選定的文本。我找到了從活動應用程序獲得HWND的方法,但是當我使用EM_GETSELTEXT時,它們在緩衝區中沒有文本。如何從另一個應用程序獲取選定的文本?
char* shortcut::getSelectedText(){
POINT mouse;
if (GetCursorPos(&mouse)){
HWND window = WindowFromPoint(mouse);//get the HWND from the active application
if (window != nullptr){
char* buffer = new char[100];
SendMessage(window , EM_GETSELTEXT, 0, LPARAM(buffer));
return buffer;
}
else{
return "";
}
}
else{
return "";
}
}
請問您是否需要重新編譯變量'racourci','souri'和'fenetre'爲英文?您的代碼看起來有點模糊。 –
HWND是一個Rich Edit框,對吧? –
'EM_GETSELTEXT'位於消息的'WM_USER + x'範圍內。系統不會爲該範圍內的消息提供指針自動封送處理。您必須在目標進程中分配內存,或使用其中一個標準Windows消息(例如'WM_GETTEXT')。當然,Right Thing™要做的就是使用[UI Automation](https://msdn.microsoft.com/en-us/library/windows/desktop/ee684009.aspx)。除非你對你的應用程序隨機失敗感到滿意。 – IInspectable