![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему-то окошко не активируется... [D7, XP]
cvg © (2006-12-26 11:32:00)Вот, когда-то оно работало, и соответствующее окошко становилось верхним и активным, а сейчас не срабатывает... С чего бы это?
MainForm.FormStyle := fsStayOnTop;
Process := TLaunchedProcess.Create('info.exe');
With Process Do
Try
wHandle := FindWindow('InfoClass');
ActivateWindow(wHandle);
h_mdi := FindWindow(wHandle,'MDIClient',nil,0);
h_pars := FindWindow(h_mdi,'InfoMDITable',nil,0); // таблица параметров
if h_pars = 0
then raise Exception.Create('Не найдена таблица параметров!');
windows.BringWindowToTop(h_pars);
Application.ProcessMessages;
Finally
Free;
End;
cvg (2006-12-26 16:12:00) [1]Да. Привожу даже конкретные цифры:
wHandle = 3477370
h_mdi = 266408
h_pars = 135250
alex_*** (2006-12-26 15:52:00) [2]а в h_pars пишется что-ть осмысленное?
cvg (2006-12-26 15:43:00) [3]Определения типов:
Process: TLaunchedProcess;
h_mdi, h_pars, wHandle:HWND;
Есть некая программа (доступа к ее исходникам нет), в которой необходимо сделать активным одно из ее окошек. "Info.exe" -- имя экзешника проги. Тип главного окна проги -- 'InfoClass', типы подчиненных окон -- 'MDIClient' и 'InfoMDITable'. Исходно функция windows.BringWindowToTop(h_pars) корректно делала активным нужное окно. Потом в течении ну, скажем, года этот режим не использовался, тогда как в код программы -- в других его частях -- вносились разнообразные изменения, тогда как эта часть была просто закомментарена. Теперь, раскомментарив ее, я вдруг обнаружил, что заданное окно активным не делается. Переменные wHandle, h_mdi и h_pars приобретают некоторые значения, функция windows.BringWindowToTop(h_pars) не срабатывает (во всяком случае, заданное окно не активируется). В чем дело -- абсолютно непонятно :(.
Desdechado (2006-12-26 13:31:00) [4]много кода без пояснений, что работало и что неактивное
про типы вообще молчу