PDA

Просмотр полной версии : [Помогите!] Как перезапустить процесс зная его имя


Чювашка
29.04.2011, 23:08
Мне надо перезапустить процесс зная его имя.
В поисковике не нашол, нашол только по закрытию.
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 (если мне не изменил память)