![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Активизация формы после выполнения внешней программы [D6, Win2k]
Федина Лидия © (2002-06-27 16:27:00)Я запускаю стандартную программу Windows - калькулятор из своего приложения по кнопке. Если, поработав в калькуляторе, я его закрываю - то все нормально, моя форма активна. Если, после запуска калькулятора, я его сверну в иконку, затем разверну, а потом уже закрою, то мое приложение не активно, пока я не щелкну кнопкой мыши. Можно ли что-то сделать в этой ситуации?
Заранее благодарна за ответ.
Volj (2002-06-27 17:55:00) [1]
procedure TForm1.Button1Click(Sender: TObject);
begin
WindowState := wsMinimized;
fileExec("calc", SW_SHOW, True);
WindowState := wsNormal;
SetForegroundWindow(Handle);
end;
function fileExec(const aCmdLine: String; SW_MODE:Word; aWait: Boolean): Boolean;
var
StartupInfo : TStartupInfo;
ProcessInfo : TProcessInformation;
begin
FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
with StartupInfo do
begin
cb:= SizeOf(TStartupInfo);
dwFlags:= STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
wShowWindow:= SW_MODE;
end;
Result := CreateProcess(nil,PChar(aCmdLine), nil, nil, False,
NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo);
if aWait then
if Result then
begin
WaitForInputIdle(ProcessInfo.hProcess, INFINITE);
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
end;
end;
kull (2002-06-27 17:40:00) [2]
> SetFocus или SetForegroundWindow
Кто фокус ставить будет, калькулятор что ли?
Volj (2002-06-27 16:28:00) [3]SetFocus или SetForegroundWindow