2013-12-07 4 views
-1

Я пытаюсь получить текст из другого окна динамически (если я что-то пишу в текстовом поле этого окна, а затем запускаю свою программу, я должен увидеть, что я написал). Так что если я использую 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; 
} 
+0

Что собственно проблема? –

+0

Когда я запускаю свою программу, он не читает текст, который я написал в текстовом поле, он читает текст, который был статически инициализирован. Мне нужно прочитать текст из текстового поля, который не инициализирован SetWindowText, но из того, что я написал в окне – Psychoman

+1

Является ли элементом управления редактирования для первого дочернего элемента окна? Если это так, вы пропустите прямо над ним. –

ответ

1

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

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

Пример:

HWND hWndEdit; 

[....] 

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

Это не ответ на мой вопрос. – Psychoman

+0

Какой вопрос? Чтобы получить текст окна, используется GetWindowText. Вы не можете ожидать, что мы будем читать в вашем уме. В чем проблема? – manuell

+0

Это тестовый код, он будет меняться в значительной степени, когда я завершу все это, но вопрос все еще остается. У меня есть тестовая программа, в которой дочернее окно является элементом управления редактированием. Из программы, написанной выше, я хочу получить динамический текст, который написан в тестовой программе. – Psychoman

Смежные вопросы