![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Программа висит в процессах
leklerk © (2012-06-04 12:29:00)Добрый день! Почему-то программа (пингующая компьютер и отсылающая сообщение) висит в процессах. Что не так?
unit UnitPingAndMsg_Test;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, IdIcmpClient, IdBaseComponent, IdComponent,
IdRawBase, IdRawClient, ExtCtrls;
type
TForm1 = class(TForm)
IdIcmpClient1: TIdIcmpClient;
procedure FormCreate(Sender: TObject);
procedure IdIcmpClient1Reply(ASender: TComponent;
const AReplyStatus: TReplyStatus);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
// массив имен пользователей
users: array[1..1] of AnsiString;
// массив IP-адресов
ip: array[1..1] of AnsiString;
i: Integer;
iWinExec: Integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
users[1] := 'nikolay';
ip[1] := '10.10.1.7';
for i := 1 to 1 do begin
IdIcmpClient1.Host:=ip[i];
IdIcmpClient1.ReceiveTimeout := 1001;
IdIcmpClient1.Ping;
end;
end;
procedure TForm1.IdIcmpClient1Reply(ASender: TComponent;
const AReplyStatus: TReplyStatus);
var
Str: AnsiString;
begin
try
if AReplyStatus.MsRoundTripTime<1000 then
begin
Str := 'cmd.exe /c msg ' + users[i]
+ ' "Тестовое сообщение!"';
try
iWinExec:= WinExec(PAnsiChar(Str), SW_HIDE);
if iWinExec>31 then
ShowMessage(IntToStr(iWinExec));
except
end;
end
else
ShowMessage('Ping не прошел!');
finally
Form1.Close;
end;
end;
end.
DVM (2012-06-04 17:54:00) [1]
> leklerk ©
Даже если ты все ошибки исправишь твоя программа все равно будет испытывать проблемы при работе не из под админа.
Anatoly Podgoretsky (2012-06-04 16:07:00) [2]Убери в другое место все это
> for i := 1 to 1 do begin
> IdIcmpClient1.Host:=ip[i];
> IdIcmpClient1.ReceiveTimeout := 1001;
> IdIcmpClient1.Ping;
> end;
Видимо ума на это не хватило.
Anatoly Podgoretsky (2012-06-04 16:07:00) [3]Хотя можешь рогом упираться, кто запрещает.
Cobalt (2012-06-04 16:02:00) [4]А что видно в отладчике?
И. Павел (2012-06-04 14:15:00) [5]> Что не так?
Попробуй этот код:
procedure TForm1.FormCreate(Sender: TObject);
begin
Close;
end;
Если ты форму еще не открыл, то она и не закроется.
leklerk (2012-06-04 13:49:00) [6]Если Ping убрать, то программа перестанет работать. Вы это понимаете, дяденька?
Anatoly Podgoretsky (2012-06-04 13:29:00) [7]Ты так нифига и не понял, что вообще то неудивительно.
leklerk (2012-06-04 13:19:00) [8]В своем репертуаре. ))
Anatoly Podgoretsky (2012-06-04 13:11:00) [9]
> IdIcmpClient1.Ping;
Это убери отсюда