Динамически получать текст из текстового поля

Я пытаюсь получить текст из другого окна динамически (если я пишу что-то в текстовое поле этого окна, а затем запускаю свою программу, я должен увидеть, что я написал). Поэтому, если я использую getWindowText, он дает мне статическое инициализированное текстовое поле. Вот в чем проблема. Это похоже на то, что делает spy ++.
Вот пример кода, что я сделал:

#include <Windows.h>
#include <vector>
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;

int main()
{
HWND hWnd;
MSG msg;
vector<HWND> a;
hWnd = FindWindow( NULL, "SomeList" );
vector<string> phrases;
char p[100];
if( !hWnd )
{
cout << "Window hasn't been found " << endl;
_getch();
exit( 1 );
}

hWnd = GetWindow(hWnd, GW_CHILD);
while (hWnd !=0)
{
hWnd = GetWindow(hWnd, GW_HWNDNEXT);
GetClassName( hWnd, p, 10 );
string k( p );
if( k == "Edit" )
a.push_back( hWnd );
GetWindowText(hWnd,p,100);
cout << p << endl;
}
phrases.resize( a.size() );

for( auto i = a.begin();i != a.end();i++ )
{
int index = 0;
GetWindowText( *i,p, 10 );
string n( p );
if( n.size() != 0 )
{
phrases[index] =  n;
index++;
}
}
_getch();
return 0;
}

-1

Решение

GetWindowText документация:

Чтобы получить текст элемента управления в другом процессе, отправьте
Сообщение WM_GETTEXT напрямую вместо вызова GetWindowText.

Пример:

HWND hWndEdit;

[....]

char szText[ 128 ] = { 0 };
int cbCopied = SendMessage( hWndEdit, WM_GETTEXT, (WPARAM)sizeof( szText ),
(LPARAM)szText );
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]