Мне надо перезапустить процесс зная его имя.
В поисковике не нашол, нашол только по закрытию.
procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(FindWindow(Nil, 'Имя программы'), WM_QUIT, 0, 0);
end;
Мне надо что-то простенькое.
Mebius
29.04.2011, 23:20
Мне надо перезапустить процесс зная его имя.
В поисковике не нашол, нашол только по закрытию.
procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(FindWindow(Nil, 'Имя программы'), WM_QUIT, 0, 0);
end;
Мне надо что-то простенькое.
а если таких процессов штук 10-15? или вы 100% уверены что процесс будет только в еденичном экземпляре?
Чювашка
29.04.2011, 23:25
а если таких процессов штук 10-15? или вы 100% уверены что процесс будет только в еденичном экземпляре?
Он в еденичном экземпляре.
Dinmaite
29.04.2011, 23:53
А если процесс не имеет окна?)
Ладно, в любом случае алгоритм таков.
1. Вырубить процесс. (TerminateProcess ([Ссылки могут видеть только зарегистрированные и активированные пользователи](v=vs.85).aspx))
2. Запустить процесс. (CreateProcess, ShellExecute, WinExec, в общем что понравится).
Чювашка
30.04.2011, 01:02
ShellExecute, WinExec - для них нужно указывать путь.
А с CreateProcess так не разобрался.
Dinmaite
30.04.2011, 08:33
Путь можно определить из процесса.
GetProcessName (если мне не изменил память)