2 / 2 / 2
Регистрация: 06.06.2014
Сообщений: 29
1

Выполнить действия после закрытия сторонней программы

11.08.2014, 10:22. Показов 1680. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, требуется помощь
я запускаю программу
Delphi
1
2
3
4
5
6
7
procedure TForm1.Button1Click(Sender: TObject);
//запуск memtest+
var filepath:Tfilename;
begin
filepath:=ExtractFilePath(Application.ExeName)+'\memtest.exe';
ShellExecute(Handle,'open',PAnsiChar(filepath),nil,nil,SW_SHOWNORMAL);
end;
мне нужно что бы после того как я закрою memtest.exe выполнялись дальнейшие действия. то есть что бы программа отследила закрытие memtest.exe и продолжила работать

Добавлено через 5 минут
Я посмотрел вот тут но там немного не то что мне нужно да и всего не понял
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.08.2014, 10:22
Ответы с готовыми решениями:

Можно ли (и как) на С++ перехватить действия сторонней программы в windows?
Например фотожопа. Возможно ли на С++ написать некоторую программу, которая бы фиксировала все...

Действия после закрытия Word Document
Здравствуйте! Есть код формирования документа из шаблона MS Word. var wordApp = new...

Выполните действия после закрытия form2 c#
в form1 открыть form2 ввести текст в текстБокс form2 использовать этот текст в form1 Кусок...

Выполнение некоторого действия после закрытия формы
Здравствуйте, есть проблемка. Существует первая форма MainForm, из которой я модально вызываю...

3
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32793 / 21133 / 8144
Регистрация: 22.10.2011
Сообщений: 36,393
Записей в блоге: 8
11.08.2014, 11:47 2
Лучший ответ Сообщение было отмечено Com1ks73 как решение

Решение

Окончание работы процесса, запущенного через ShellExecute, отследить невозможно. Используй ShellExecuteEx:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Uses ShellApi; // не забудь добавить этот модуль
 
// ...
 
var
  filepath: Tfilename;
  ShExecInfo: SHELLEXECUTEINFO;
begin
  filepath := ExtractFilePath(Application.ExeName)+'\memtest.exe';
 
  ZeroMemory(@ShExecInfo, SizeOf(ShExecInfo));
  ShExecInfo.cbSize := SizeOf(SHELLEXECUTEINFO);
  ShExecInfo.fMask := SEE_MASK_NOCLOSEPROCESS;
  ShExecInfo.Wnd := 0;
  ShExecInfo.lpVerb := nil;
  ShExecInfo.lpFile := PChar(filepath);
  ShExecInfo.lpParameters := '';
  ShExecInfo.lpDirectory := nil;
  ShExecInfo.nShow := SW_SHOW;
  ShExecInfo.hInstApp := 0;
  ShellExecuteEx(@ShExecInfo);
  WaitForSingleObject(ShExecInfo.hProcess, INFINITE);
  ShowMessage('Finished');
end;
3
2 / 2 / 2
Регистрация: 06.06.2014
Сообщений: 29
11.08.2014, 12:13  [ТС] 3
спасибо огромное
0
пофигист широкого профиля
4704 / 3140 / 857
Регистрация: 15.07.2013
Сообщений: 18,113
12.08.2014, 02:01 4
UI, Тоже кстати спасибо.
Сохраню ссылку для последующих цитирований.

Не по теме:

А то как-то пример с CreateProcess мало кого вдохновляет нынче. :)

0
12.08.2014, 02:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.08.2014, 02:01
Помогаю со студенческими работами здесь

Как выполнить функцию после закрытия второй формы
Здравствуйте! Ну вообщем такой вопрос :)

IntelliTrace остается в процессах после закрытия программы. Правильное завершение программы?
Много (очень много) раз запускал программу, закрывал через крестик. Вдруг винда сообщает, что...

Процесс программы висит в диспетчере задач даже после закрытия программы
Помогите пожайлуйста с решением этой проблемы. Сдача проекта уже скоро, а тут такое. Вобщем...

Процесс программы висит в диспетчере задач даже после закрытия программы
Не понимаю почему программа остается в процессах


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru