
24.06.2007, 22:11
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,315
С нами:
10248806
Репутация:
2371
|
|
ВОзникла проблема с закрытием стороней программы...
Вообщем я сделла чтобы через мою прогну можно было открыть другую..
Код:
AppHI := ShellExecute(Handle, 'open',PChar(Edit3.Text), nil, nil, SW_SHOWNORMAL);
Но вот мне надо сделать чтобы можно было закрыть её через мою прогу...
Программа, которую запускаю через свою прогу - консольная....
|
|
|

24.06.2007, 22:27
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,315
С нами:
10248806
Репутация:
2371
|
|
Программа консольная, заголовки окна все время меняются...
|
|
|

24.06.2007, 22:30
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,315
С нами:
10248806
Репутация:
2371
|
|
Pid ведь всегда меняется 
|
|
|

25.06.2007, 01:56
|
|
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
С нами:
10088966
Репутация:
646
|
|
Isis, небольшой примерчик:
Код:
var
appname: string;
start: TStartupInfo;
procInfo: TProcessInformation;
begin
appname := 'cmd.exe';
fillchar(start, sizeof(start), 0);
fillchar(procInfo,sizeof(procInfo), 0);
CreateProcess(nil,pchar(appname),nil,nil,false,0,nil,nil,start,procInfo);
sleep(1000);
TerminateProcess(procInfo.hProcess,0);
end;
Последний раз редактировалось Joker-jar; 25.06.2007 в 02:05..
|
|
|

25.06.2007, 02:17
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,315
С нами:
10248806
Репутация:
2371
|
|
Сообщение от Joker-jar
Isis, небольшой примерчик:
Код:
var
appname: string;
start: TStartupInfo;
procInfo: TProcessInformation;
begin
appname := 'cmd.exe';
fillchar(start, sizeof(start), 0);
fillchar(procInfo,sizeof(procInfo), 0);
CreateProcess(nil,pchar(appname),nil,nil,false,0,nil,nil,start,procInfo);
sleep(1000);
TerminateProcess(procInfo.hProcess,0);
end;
Хм, т.е. можно прогу закрыть по имени в процессах?
|
|
|

25.06.2007, 02:26
|
|
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
С нами:
10088966
Репутация:
646
|
|
Не, appname := 'cmd.exe'; это я для примера запускаю консоль. CreateProccess создает процесс, структура procInfo заполняется информацией о процессе. Завершается процесс через TerminateProcess (подается procInfo.hProcess - хэндл созданного процесса). В примере через секунду. Тебе нужно будет procInfo объявить как глобальную, зарершить процесс сможешь когда тебе угодно.
|
|
|

25.06.2007, 03:51
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,315
С нами:
10248806
Репутация:
2371
|
|
Ну тут опять надо знать заголовок проги, а он постояно меняется =\
|
|
|

25.06.2007, 11:21
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
С нами:
10721066
Репутация:
4360
|
|
Сообщение от Isis
Ну тут опять надо знать заголовок проги, а он постояно меняется =\
Ты не понял примера. Там запуск идет не через shellexecute, а через createprocess, что, кстати, более красиво, но суть не в том.
CreateProcess, если запуск прошел удачно, вернет тебе ThreadId, ProcessId, hThread, hProcess созданного процесса. Дальше можно смело орудовать этими значениями (конечно, стоит их гдето сохранить). Потом вызовешь TerminateProcess(pi.hProcess, 0) и все.
Кстати, а каким боком вопрос относится к дельфи? Тему разделяю.. автору -
|
|
|

25.06.2007, 15:14
|
|
Участник форума
Регистрация: 31.10.2006
Сообщений: 212
С нами:
10277398
Репутация:
50
|
|
|
|
|

25.06.2007, 09:59
|
|
Участник форума
Регистрация: 09.02.2004
Сообщений: 122
С нами:
11710201
Репутация:
134
|
|
Isis, в примере, что дал Joker-jar не надо знать заголовок окна.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|