Я получаю выделенный текст из другого приложения без использования буфера обмена. Я нашел способ иметь 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 ™ - это пойти с [Автоматизация пользовательского интерфейса] (https://msdn.microsoft.com/en-us/library/windows/desktop/ee684009.aspx). Если вы не удовлетворены своим случаем случайным сбоем. – IInspectable