Здравствуйте, есть такая программка копирования файла на рабочие столы выбранных сетевых компов. Но если некоторые компы из выбранных не в сети - получаем тормоза. Хотелось бы проверить их минимальным пингом перед копированием. Пробовал IdIcmpClient, но что-то не пойму там с обработкой результата... Как-бы так сделать, чтобы в коде вместо
if DirectoryExists(.........) then (перед копированием файла) вставить именно команду пинга и тут же обработать ответ: если пинг есть - копируем файл, нет - пишем в лог, что не смогли достучаться.
Гуглил очень долго.. Но что-то не раздуплю никак
Помогите, спасибо
Код:
unit copy;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, FileCtrl, ShellApi;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
OpenDialog1: TOpenDialog;
Button3: TButton;
CheckBox1: TCheckBox;
RadioGroup1: TRadioGroup;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
CheckBox2: TCheckBox;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
destination: string;
bazarkina: string;
bogacheva: string;
txt:System.Text;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
bazarkina:='192.168.2.25';
bogacheva:='192.168.2.27';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Edit1.Text:=OpenDialog1.FileName;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Clear;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
AssignFile(txt,'log.txt'); //регистрация файла
Rewrite(txt); //создание файла
if RadioButton1.Checked=True then destination:='\C$\Users\Public\Desktop\';
if RadioButton2.Checked=True then destination:='\C$\Documents and Settings\All Users\Рабочий стол\';
If CheckBox1.Checked=true then
begin
if DirectoryExists(bazarkina) then
begin
CopyFile(Pchar (OpenDialog1.FileName), Pchar('\\'+bazarkina+destination+ExtractFileName(OpenDialog1.FileName)),False);
WriteLn(txt,'Базаркина - ОК')
end else WriteLn(txt,'Базаркина - не скопировано');
end;
If CheckBox2.Checked=true then
begin
if DirectoryExists(bogacheva) then
begin
CopyFile(Pchar (OpenDialog1.FileName), Pchar('\\'+bogacheva+destination+ExtractFileName(OpenDialog1.FileName)),False);
WriteLn(txt,'Богачева - ОК')
end else WriteLn(txt,'Богачева - не скопировано');
end;
CloseFile(txt);
ShellExecute(Handle, 'open', 'log.txt', nil, nil, SW_SHOWNORMAL);
end;
end.