![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Позиии приложений [D7]
liavik © (2006-05-30 17:47:00)Мое приложение FormStyle = fsStayOnTop. При запуске из моей проги чужой программы делаю SetWindowPos (чуж.прг, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE+SWP_NOSIZE); Форма загружается поверх моего. Между формами можно переключаться, именно этого эффекта я и добивлся. Но при открытии у нее дочерних модальных форм она уходит за мою и досвиданья... Как этого избежать?
liavik (2006-05-30 18:06:00) [1]Вот код:
procedure TFormDDEPR.ReadWin20001Click(Sender: TObject);
var err: integer;
h: thandle;
begin
// если чуж. прога уже загружена, то ее на передний план...
h:= FindWindow('Tdlg_Main', nil);
if h > 0 then begin
SetWindowPos (h, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE+SWP_NOSIZE);
exit;
end;
// сообственно ее запускаем
err:= WinExec(PChar('C:\Program Files\Endress+Hauser\ReadWin32\ReadWin32.exe'), SW_SHOWNORMAL);
if err < 32 then begin
MessageDlg('Ошибка запуска ReadWin2000. Проверьте наличие программы' +#10#13+ 'C:\Program Files\Endress+Hauser\ReadWin32\ReadWin32.exe', mtError, [mbOK], 0);
exit;
end;
h:= FindWindow('Tdlg_Main', nil);
if h > 0 then begin
SetWindowPos (h, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE+SWP_NOSIZE);
// SetWindowPos (Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE+SWP_NOSIZE);
// если раскомент. то в принципе все работает как надо, НО
// мое приложение становиться не TOPMOST, и юзера могут играть в "косынку" :)
end;
end;
antonn (2006-05-30 17:49:00) [2]вызывать
> SetWindowPos (чуж.прг, HWND_TOPMOST, 0, 0, 0, 0,
> SWP_NOMOVE+SWP_NOSIZE);
несколько раз.