Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.31;
Скачать: CL | DM;

Вниз

Запуск и завершение программы принудительно.   Найти похожие ветки 

 
()utLaw ©   (2002-10-20 00:00) [0]

Собственно, надо реализовать сабж. Т.е. запустить прогу и, если она за нужное ремя не завершилась, то скинуть ее.
Плз, пишите мне на мыло.


 
Rouse_ ©   (2002-10-20 00:05) [1]

Ну посмотри ты в FAQ, там все по полочкам разложено

Желаю успехов


 
Aleks1   (2002-10-20 04:11) [2]

Честно говоря общий ответ на сабж, действительно есть в FAQ причем не один раз. Но, имхо, если привести подробности задачи, то ответ может быть гораздо лучше по всем параметрам.


 
Rouse_ ©   (2002-10-20 05:36) [3]

Да не вопрос, ответ то дать можно, но почему бы и не посмотреть в факе?

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

procedure Demo_Start_Kill_Proc;
var
H:HWND;
dwPID: integer;
hProc: THandle;
begin
//Запускаем
h:= ShellExecute(Handle,"open",PChar(Расположение программы),PChar(Параметры),PChar(Рабочая директория),SW_NORMAL);
//Ждем
Sleep(Время ожидания);
//Убиваем программу
if GetWindowThreadProcessId(H, @dwPID)<>0 then
hProc := OpenProcess(PROCESS_ALL_ACCESS, TRUE, dwPID);
if hProc <> 0 then
TerminateProcess(hProc, 0);
end;


Желаю успехов


 
andrey_pst ©   (2002-10-20 08:27) [4]

Разрешите еще вопрос:
TerminateProcess выгружает dll, использующиеся "убиваемой" программой ?


 
Rouse_ ©   (2002-10-20 09:35) [5]

Нет, для этого лучше WM_QUIT

Желаю успехов


 
()utLaw ©   (2002-10-20 10:51) [6]

А если прога запускается ДОСовская?


 
Rouse_ ©   (2002-10-20 10:55) [7]

Тогда первый вариант кода

Желаю успехов


 
()utLaw ©   (2002-10-21 09:12) [8]

Я сделал так:

(************ Server.dpr ************)
program Server;

uses
Forms,
ServerMain in "ServerMain.pas" {ServerForm};

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TServerForm, ServerForm);
Application.Run;
end.
(************ ServerMain.pas ************)
unit ServerMain;

interface

uses
// Messages, SysUtils, Graphics, Dialogs, StdCtrls,
Classes, Controls, StdCtrls,
Forms, Windows, ShellAPI;

type
TServerForm = class(TForm)
bRun: TButton;
procedure bRunClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
ServerForm: TServerForm;

implementation

{$R *.DFM}

procedure TServerForm.bRunClick(Sender: TObject);
var
H:HWND;
dwPID: integer;
hProc: THandle;
begin
//Запускаем
h:= ShellExecute(Handle,"open",PChar("d:\Мои документы\Projects\Progs\Tester\TST.exe"),PChar(""{Параметры}),PChar("d:\Мои документы\Projects\Progs\Tester\"{Рабочая директория}),SW_NORMAL);
//Ждем
Sleep(3000{Время ожидания});
//Убиваем программу
if GetWindowThreadProcessId(H, @dwPID)<>0 then
hProc := OpenProcess(PROCESS_ALL_ACCESS, TRUE, dwPID);
if hProc <> 0 then
TerminateProcess(hProc, 0);
end;

end.
(************ TST.PAS ************)
{Компилировано TurboPascal"ем}
begin
readln;
end.

но... Программа TST не завершается.... Что делать?

Программа должна тестировать олимпиадные задачи. Там есть лимит по времени, т.е. по прошествии N секунд задача убивается (если сама не завершилась) и выдается сообщение о непрохождении по времени. Иначе происходит анализ результатов.



Страницы: 1 вся ветка

Текущий архив: 2002.10.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
3-101167
@Ujin
2002-10-11 13:22
2002.10.31
EStackOverflow - возникает по нажатии табуляции в DBGrid.


3-101096
Vovaka
2002-10-09 15:16
2002.10.31
Знатоки и пользователи Sybase ASE подскажите


3-101050
Mister-D
2002-10-08 12:48
2002.10.31
Графическое представление химических формул


1-101189
Kolya
2002-10-20 16:18
2002.10.31
ReadProcessMemory не хочет читать Memory


14-101438
Delirium
2002-10-10 12:35
2002.10.31
QuickReport 3.6.2 Professional + Exports 2 for Delphi 7