Код (Text): *Wnd = FindWindow(0, "HCS"); if (*Wnd != 0) { Application->MessageBoxA("Засечён окно.", "Ошибка!"); } *Wnd = FindWindowEx(Wnd, 0, 0, "GroupBox1"); if (*Wnd != 0) { Application->MessageBoxA("Засечён бокс.", "Ошибка!"); } *Wnd = FindWindowEx(Wnd, 0, 0, "Memo1"); if (*Wnd != 0) { Application->MessageBoxA("Засечён мемо.", "Ошибка!"); } Вот и окно HCS он находит, а GroupBox1 и Memo1 не находит. Это я дурак или API ?
ACF_muti1atoR 1. Не понятно, какого у тебя типа Wnd - HWND или HWND*. По идее должно быть так: Код (Text): HWND hWnd = FindWindow(0, "HCS"); if (hWnd) { Application->MessageBoxA("Засечён окно.", "Ошибка!"); } HWND hCtrl = FindWindowEx(hWnd, 0, 0, "GroupBox1"); if (hCtrl) { Application->MessageBoxA("Засечён бокс.", "Ошибка!"); } hCtrl = FindWindowEx(hCtrl, 0, 0, "Memo1"); if (hCtrl) { Application->MessageBoxA("Засечён мемо.", "Ошибка!"); } 2. Разберись (с помощью Spy++), являются ли указанные контролы дочерними к HCS.
1. В таком случае ошибка здесь: FindWindowEx(Wnd, 0, 0, "GroupBox1"); Смотри прототип, ты указатель (HWND*) передаешь вместо описателя (HWND). 2. Надеюсь, перед присвоением твой указатель валиден. Лучше при этом сделать ссылку, и работать уже с ней: HWND &hWnd = *Wnd;
Да 8) я почему-то передавал последним параметром не заголовок элемента, а его имя (GroupBox1). И теперь написал туда заголовок груп-бокса - я его нашел, но вот Мемо я найти всё равно не могу, потому что у него нету заголовка в принципе., а по имени он его не находит.
ACF_muti1atoR По оконному классу ищи, если нет других мемо. Если у тебя используется C++ Builder, класс скорее всего "TMemo". Класс контрола можно также узнать через Spy++.
Блин ... а я искал класс Memo или Edit ... в винде же он именно Memo 8)) я не думал что билдер контролам меняет класс на свой TMemo.
ACF_muti1atoR В user32 не зарезервированно вообще класса под мемо, это обычный multi-line "edit" контрол. Незнаю как в MFC.