#include "windows.h"
HWND hTargetWindow;
HWND hWindow;
LRESULT CALLBACK WindowProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
hWindow = GetFocus();
return true;
}
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPWSTR lpCmdLine, int nCmdShow) {
LONG oldWNDPRC;
TCHAR szText[620];
hTargetWindow = GetForegroundWindow();
if (IsWindowVisible(hTargetWindow)==0)
{
while( (hTargetWindow=GetWindow(hTargetWindow,GW_HWNDNEXT))!=NULL)
{
if (IsWindowVisible(hTargetWindow)!=0)
break;
}
}
oldWNDPRC = GetWindowLong(hTargetWindow, GWL_WNDPROC);
SetWindowLong(hTargetWindow, GWL_WNDPROC, (LONG)&WindowProc);
SendMessage(hTargetWindow,WM_NULL, 0, 0);
SetWindowLong(hTargetWindow, GWL_WNDPROC, oldWNDPRC);
GetWindowText(hWindow,szText,620);
return 0;
}
Считать текст из чужого окна
Здравствуйте, пожалуйста, подскажите в чем моя ошибка, не могу считать текст из контрола(в фокусе) в чужом окне. Дело осложняется тем, что в моей системе не поддерживается функция AttachThreadInput
найди хендл этого контрола и GetWindowText
В том то и проблема, что я не могу его получить. Уточню мне нужен контрол, который находится в фокусе.
Попробуй GetFocus
Если это окошечко ввода пароля, например Edit, то тут ничего и не должно получиться! ;-))) Есть конечно другой способ, инжектируешь кусочек кода в процесс которому это окно принадлежит, этот кусочек выдирает этот текст и отсылает его, например через WM_COPYDATA нашему приложению... если интересует практическая реализация, могу помочь... :-))))
Нет пароль мне считывать не нужно, мне нужно взять текст перевести и вставить обратно.Буду рад любой помощи. Мне кажется, что и мой код где-то недалеко от истины...
Вот я нашел у себя кое-что готовое. Подцепи значок мишени мышкой и наведи не отпуская кнопки на любой контрол в системе...
Спасибо, может пригодится, я пишу под Windows Mobile, а там много ограничений.
Подправил свой код, он теперь работает, но только если запускать программу на устройстве в режиме отладки. Иначе, если запускать при помощи программы, которая вызывается по горячей кнопке и запускает мою программу, перестает работать, GetFocus() возвращает хэндл родительского окна а не контрола. ??? пока не нашел решения.....