Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Закрытие окон приложений, вызванных Api-функциями


Автор: santilaas 27.1.2007, 17:12
Привет всем! 
Вопрос такой: из своего приложения я функцией ShellExecute открываю стандартные калькулятор, блокнот и т.д. Как сделать, чтобы при закрытии моего приложения закрывались все окна (приложения), вызванные Api-функциями?

Автор: W4FhLF 27.1.2007, 17:13
Открывай их лучше с помощью CreateProcess, он позволяет иметь хэндл созданного тобою процесса, после просто вызовешь TerminateProcess и всё.

Автор: Romikgy 27.1.2007, 19:46
имхо проще окну послать мессагу close 

Автор: santilaas 28.1.2007, 15:24
Цитата

Открывай их лучше с помощью CreateProcess, он позволяет иметь хэндл созданного тобою процесса, после просто вызовешь TerminateProcess и всё.

W4FhLF, примером не поделишься? Заранее спасибо

Цитата

проще окну послать мессагу close  
   
- Romikgy, по-подробнее можно? 

Автор: W4FhLF 28.1.2007, 20:08
Код

var
  si: TStartupInfo;
  pi: TProcessInformation;
begin
  CreateProcess(nil,pChar('E:\Temp\IoctlDecoder.exe'), nil, nil, FALSE, 0, nil, nil, si, pi);
  TerminateProcess(pi.hProcess, 0);

Автор: santilaas 10.2.2007, 18:43
W4FhLF, спасибо за код - пишу этот код при нажатии на кнопку - вот только, если честно у меня никакой реакции не происходит - может надо еще чего-нить прописать?!
И еще вопрос - получается надо всегда указывать абсолютный путь к приложению - даже к стандартному блоноту или калькулятору?

Автор: MetalFan 10.2.2007, 21:30
Цитата(santilaas @  10.2.2007,  18:43 Найти цитируемый пост)
у меня никакой реакции не происходит

а подумать над примером?
вызывается CreateProcess - что происходит? запуск процесса...
затем сразу же вызывается что? TerminateProcess... только не говори, что англицкий не знаешь ;)

Автор: santilaas 11.2.2007, 15:46
Цитата

а подумать над примером?

- нет, ну я не настолько коловой - понятно дело - комментировал я эту строку - без нее (TerminateProcess) делал - но не хочет работать и все.

Автор: MetalFan 11.2.2007, 17:23
что CreateProcess возвращает? что GetLastError "говорит"?

Автор: aktuba 13.2.2007, 07:51
santilaas, ты код покажи! Как можно угадать, почему у тебя не работает, если не видно что и где не работает?

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