Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Считать текст из чужого окна

19K
15 августа 2006 года
xsaid
4 / / 15.08.2006
Здравствуйте, пожалуйста, подскажите в чем моя ошибка, не могу считать текст из контрола(в фокусе) в чужом окне. Дело осложняется тем, что в моей системе не поддерживается функция AttachThreadInput
Код:
#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;
}
6.8K
15 августа 2006 года
Romikgy
84 / / 28.04.2005
найди хендл этого контрола и GetWindowText
19K
15 августа 2006 года
xsaid
4 / / 15.08.2006
[QUOTE=Romikgy]найди хендл этого контрола и GetWindowText[/QUOTE]
В том то и проблема, что я не могу его получить. Уточню мне нужен контрол, который находится в фокусе.
334
15 августа 2006 года
HexEdit
809 / / 27.07.2006
Попробуй GetFocus
354
15 августа 2006 года
ШпиЁн
468 / / 19.02.2006
Если это окошечко ввода пароля, например Edit, то тут ничего и не должно получиться! ;-))) Есть конечно другой способ, инжектируешь кусочек кода в процесс которому это окно принадлежит, этот кусочек выдирает этот текст и отсылает его, например через WM_COPYDATA нашему приложению... если интересует практическая реализация, могу помочь... :-))))
19K
16 августа 2006 года
xsaid
4 / / 15.08.2006
[QUOTE=ШпиЁн]Если это окошечко ввода пароля, например Edit, то тут ничего и не должно получиться! ;-))) Есть конечно другой способ, инжектируешь кусочек кода в процесс которому это окно принадлежит, этот кусочек выдирает этот текст и отсылает его, например через WM_COPYDATA нашему приложению... если интересует практическая реализация, могу помочь... :-))))[/QUOTE]
Нет пароль мне считывать не нужно, мне нужно взять текст перевести и вставить обратно.Буду рад любой помощи. Мне кажется, что и мой код где-то недалеко от истины...
354
16 августа 2006 года
ШпиЁн
468 / / 19.02.2006
Вот я нашел у себя кое-что готовое. Подцепи значок мишени мышкой и наведи не отпуская кнопки на любой контрол в системе...
19K
16 августа 2006 года
xsaid
4 / / 15.08.2006
[QUOTE=ШпиЁн]Вот я нашел у себя кое-что готовое. Подцепи значок мишени мышкой и наведи не отпуская кнопки на любой контрол в системе...[/QUOTE]
Спасибо, может пригодится, я пишу под Windows Mobile, а там много ограничений.
Подправил свой код, он теперь работает, но только если запускать программу на устройстве в режиме отладки. Иначе, если запускать при помощи программы, которая вызывается по горячей кнопке и запускает мою программу, перестает работать, GetFocus() возвращает хэндл родительского окна а не контрола. ??? пока не нашел решения.....
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог