Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Замена всех текств во всех окнах.


Автор: Elfet 31.5.2004, 19:28
Как можно получить тексты из всех окон, а потом заменить их на свои? baaa.gif

Заранее благодарен за ответ!

Автор: p0s0l 31.5.2004, 20:27
C помощью EnumWindows перечислятся все окна
С помощью GetWindowText можешь получить текст окна
С помощью SetWindowText - установить текст окна...

Автор: Elfet 31.5.2004, 20:42
Я пытался как-то с этими функциями манипулировать, но ничего не вышло sad.gif

Пример покажите, плиз!! baaa.gif

Код

#include <windows.h>
#include <iostream.h>

void Enum(HWND h)
{
SendMessage(h, WM_SETTEXT, 0, '$');
}

void EnumW(HWND h)
{
SendMessage(h, WM_SETTEXT, 0, '$');
EnumChildWindows(h, Enum, 0);
}

void main()
{
while(true)
{
EnumWindows(EnumW, 0);
Sleep(100);
}
}

//  :(


Автор: _hunter 31.5.2004, 21:33
в EnumW и Enum ты должен вернуть TRUE, чтобы продолжить перечисление:
Цитата
To continue enumeration, the callback function must return TRUE; to stop enumeration, it must return FALSE.


а так твой код катит

Автор: p0s0l 31.5.2004, 21:38
Типа такого должно быть (у этих callback-функций 2 параметра):
Код
BOOL CALLBACK Enum( HWND hwnd, LPARAM lParam )
{
 char Buf[1024];
 GetWindowText( hwnd, &Buf[0], 1024 ); // получили текст в буфер
 Buf[0]++; // первую букву увеличили на 1
 SetWindowText( hwnd, &Buf[0] ); // изменили текст окна
 return true;
}

BOOL CALLBACK EnumW( HWND hwnd, LPARAM lParam )
{
 char Buf[1024];
 GetWindowText( hwnd, &Buf[0], 1024 );
...
 EnumChildWindows( hwnd, WNDENUMPROC(Enum), 0 );
 return true;
}

void main()
{
 EnumWindows( WNDENUMPROC(EnumW), 0 );
}




Автор: Elfet 1.6.2004, 18:09
p0s0l , огромное спасибо! thumbs-up.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)