Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];

Вниз

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

 
()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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.008 c
1-101282
Vint
2002-10-22 15:57
2002.10.31
Сортировка


14-101490
Странник
2002-10-07 11:15
2002.10.31
HUB vs SWITCH


14-101488
Николай Быков
2002-10-11 18:25
2002.10.31
Простите мен за всё...


1-101323
Treiber
2002-10-20 03:30
2002.10.31
Stay on top


7-101553
Andrew_R
2002-08-19 22:05
2002.10.31
Com port и таймер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский