Добрый день.подскажите как реализовать
в программе есть запуск ссылки:
WinExec('rundll32 url.dll,FileProtocolHandler http://www.site.html', SW_HIDE);
нужно после загрузки этой странички, закрывать потом именно это окно. Не зависимо от того, открыты ли ещё какие либо браузеры, даже если открыт тот что по умолчанию, нужно закрытие окна открытого именно оператором указанным выше.
может это всё можно реализовать не обязательно winexec?
Заранее спасибо.
закрытие запущенного процесса
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Приведу тебе такой пример:
Данный код вызывает 7z.exe с параметрами, позволяет дождаться выполнения этой проги и только потом продолжить выполнять дальнейший код Вашей программы.
Пример отдаленный, но думаю что копать нужно Вам в этом направлении.
Код: Выделить всё
....
procedure RunZipAndWait(appname:string;param:string);
Var SI: _STARTUPINFOA;
PI: _PROCESS_INFORMATION;
begin
GetStartupInfo(SI);
CreateProcess(PChar(appname),PChar(param), nil, nil, true, CREATE_DEFAULT_ERROR_MODE, nil, nil, SI, PI);
WaitForSingleObject(PI.hProcess,INFINITE);
Closehandle(PI.hProcess);
CloseHandle(PI.hThread);
end;
....
<где-то на кнопке>:
Appl:=ExtractFilePath(application.ExeName)+'Arc\7z.exe';
Appl_Params:=' a -tzip "'+pathbase+'ARC\'+'dbase.zip'+'" "'+pathbase+'ARC\dbase.mdb';
Appl_CmdLine:=Format(' "%s" %s" ',[Appl,Appl_Params]);
RunZipAndWait(appl,Appl_CmdLine);
Пример отдаленный, но думаю что копать нужно Вам в этом направлении.
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD

-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
И вот еще малость кода:
Первая процедура получает список процессов, вторая умеет завершить указанный процесс
Код: Выделить всё
Procedure LoadProcList ( List : TStrings );
Var
Proc : Thandle;
ProcTag : TagProcessentry32;
begin
Proc := CreateToolHelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
ProcTag.dwSize := SizeOf ( ProcTag );
If Process32first ( Proc,ProcTag ) then
Repeat
List.Add ( ProcTag.szExeFile+IntToStr(ProcTag.th32ProcessID));
Until not Process32Next ( Proc, ProcTag )
End;
Procedure TermProc ( ProcID : Cardinal );
var
Proc : THandle;
begin
Proc := openprocess (PROCESS_TERMINATE, False, ProcID );
TerminateProcess ( Proc, 0 );
end;
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD
