невижу условия проверяющего доступность сервера
тут неважно доступен сервак или нет код всеравно сохраняет картинку на сервере, это неправильно
я так понял код делает снимок экрана и сохраняет его на удаленном пк
сделайте проверку пинга удаленного сервера
Ping('127.0.0.1', Memo1);
если пинг имеется значит сервер доступен если сервер доступен то можно выболнять команду
JpegIm.SaveToFile('\\server\work\screen\'+cname+'.jpg'); //сохраняем фотку на уд. сервере.
если пинга нет то выводить сообщение о недоступности уд. сервера
procedure Ping(IP: String; OutMemo:TMemo);
const BUFSIZE = 2000;
var SecAttr : TSecurityAttributes;
hReadPipe,
hWritePipe : THandle;
StartupInfo: TStartUpInfo;
ProcessInfo: TProcessInformation;
Buffer : Pchar;
WaitReason,
BytesRead : DWord;
begin
with SecAttr do
begin
nlength := SizeOf(TSecurityAttributes);
binherithandle := true;
lpsecuritydescriptor := nil;
end;
if Createpipe (hReadPipe, hWritePipe, @SecAttr, 0) then
begin
Buffer := AllocMem(BUFSIZE + 1);
FillChar(StartupInfo, Sizeof(StartupInfo), #0);
StartupInfo.cb := SizeOf(StartupInfo);
StartupInfo.hStdOutput := hWritePipe;
StartupInfo.hStdInput := hReadPipe;
StartupInfo.dwFlags := STARTF_USESTDHANDLES +
STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := SW_HIDE;
if CreateProcess(nil,
PChar('ping.exe '+IP),
@SecAttr,
@SecAttr,
true,
NORMAL_PRIORITY_CLASS,
nil,
nil,
StartupInfo,
ProcessInfo) then
begin
repeat
WaitReason := WaitForSingleObject( ProcessInfo.hProcess,100);
Application.ProcessMessages;
until (WaitReason <> WAIT_TIMEOUT);
Repeat
BytesRead := 0;
ReadFile(hReadPipe, Buffer[0], BUFSIZE, BytesRead, nil);
Buffer[BytesRead]:= #0;
OemToAnsi(Buffer,Buffer);
OutMemo.Text := OutMemo.text + String(Buffer);
until (BytesRead < BUFSIZE);
end;
FreeMem(Buffer);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
CloseHandle(hReadPipe);
CloseHandle(hWritePipe);
end;
end;
Другие языки программирования и технологии
Помогите разобраться с кодом Delphi
> невижу условия проверяющего доступность сервера
Оно нафих не нужно.
И пинг тут как корове седло.
Следует просто ГРАМОТНО использовать try-блок, а не шлепать его безмозгло куда и как попало.
А это
bm.Free;
JpegIm.Free;
bm.Destroy;
JpegIm.Destroy;
просто "шедевр".
Оно нафих не нужно.
И пинг тут как корове седло.
Следует просто ГРАМОТНО использовать try-блок, а не шлепать его безмозгло куда и как попало.
А это
bm.Free;
JpegIm.Free;
bm.Destroy;
JpegIm.Destroy;
просто "шедевр".
Похожие вопросы
- Помогите разобраться с кодом. Ошибка в строчке for (int i = 0, i > 100, i++) {
- Помогите разобраться в коде. Язык Фортран
- Помогите разобраться с кодом
- Пожалуйста помогите разобраться с даним кодом C++. Тема : Односвязание списки
- Помогите с кодом delphi
- помогите разобраться (delphi)
- Помогите составить задачу в Delphi
- Помогите разобраться в програмном коде на С++
- Помогите разобраться в старом коде Фортрана...
- программисты помогите срочно задача на Delphi