получить текст из textField hWnd с веб-сайта vc ++ - PullRequest
0 голосов
/ 09 марта 2011

Я пишу приложение, которое автоматически заполняет сохраненные данные в любом приложении win32. Это приложение сделано в vc ++ для MFC.

Рабочий процесс состоит в том, чтобы отправить программу в трей, глобальную клавиатуру перехвата, поймать CTRL + SHIFT + K (K = A, чтобы добавить, R, чтобы удалить, S, чтобы отправить информацию, M, чтобы изменить информацию и Q, чтобы выйти), encript / расшифровать и сохранить / получить информацию из базы данных MySql.

Когда программа ловит действие пользователя, она сканирует активное верхнее окно следующим образом:

HWND hWndMW = GetForegroundWindow();
wchar_t buff[512];

this->ClearBuffer<wchar_t>(buff, 512);
GetClassName(hWndMW, buff, 512);
String^ sClassName = gcnew String(buff);
this->ClearBuffer<wchar_t>(buff, 512);

GetWindowText(hWndMW, buff, 512);
String^ sText = gcnew String(buff);

zOrder=0;           
EnumChildWindowsDelegate^ ecwDel = gcnew AutoComplete::EnumChildWindowsDelegate(this, &AutoComplete::hWndControls);
EnumChildWindows(hWndMW, ecwDel, (LPARAM) NULL);

И функция, которая извлекает информацию:

bool hWndControls(HWND hWnd, LPARAM lParam)
{
    wchar_t buff[512];
    zOrder++;

    this->ClearBuffer<wchar_t>(buff, 512);
    GetClassName(hWnd, buff, 512);
    String^ sClassName = gcnew String(buff);

    if (sClassName->ToUpper()->Contains("EDIT"))
    {
        char buff1[MAX_DATASIZE];
        this->ClearBuffer<char>(buff1, MAX_DATASIZE);
        int len = this->SendMessage(hWnd, WM_GETTEXT, MAX_DATASIZE, (LPARAM) buff1);
        buff1[len] = 0;
        String^ sTextInside = gcnew String(buff1);
        if(textInside!="") SaveData(hWndMW, hWnd, zOrder, sTextInside);
    }


    return true;
};

SaveData () еще не разработан. Вопросы:

1- Как получить информацию из формы веб-сайта (в основном в Mozilla, IExplore или Google Crome)?

2- Есть ли способ сопоставить информацию с элементом управления, где она находится, вместо использования zOrder? Я думаю, что-то вроде «управляющего имени», которое можно получить из hWnd ..

Любые комментарии приветствуются! Спасибо,

Miguel

1 Ответ

0 голосов
/ 10 марта 2011

Хорошо, посмотрев глубоко в Интернете, я нашел первый вопрос:

http://www.codeproject.com/KB/applications/Sniffer.aspx

http://msdn.microsoft.com/en-us/library/aa366510%28VS.85%29.aspx -> очень хороший пошаговый пример

Второй вопрос еще жив ..

Есть ли способ однозначно сопоставить информацию из окна и ее содержимое? Конкретно я ищу элементы управления EDIT и STATIC.

Еще одна интересная вещь, которую я обнаружил, заключается в том, что некоторые приложения на самом деле не отображают некоторые данные в EDIT или в любом поле (в основном пароли), но они наглядно показывают, что в поле есть некоторые данные, есть идеи о том, как это делается?

...