КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Else beginTimer1.Enabled := false; Form1.Frame11.Label14.Caption := 'Копирование завершено.'; Form1.Frame11.Memo2.Lines.Add(‘Копирование завершено..'); Form1.Frame11.QProgressBar1.position := 100; MessageBox(0, ‘Передача файлов завершена’, 'Трансфер', mb_IconInformation); Form1.Frame11.Hide; Form1.Frame21.Show; end; end;
Для того, чтобы выделить все файлы или снять выделения сразу со всех файлов в папке - предусмотрен компонент TPoupMenu на фрейме с ListView1 и отчётом.
На Сервере используются процедуры для передачи отчётов: Send и SendA: Процедура SendАпередаёт клиенту одну строку:
procedure TMain.SendA(Strng : String); Begin Try Client.Connect; Client.WriteLn(Strng); Client.Disconnect; Except end; end; Параметр Strngявляется строковой переменной, в которую записывается строка для передачи Клиенту. Client.Connect; - устанавливается соединение с Клиентом, если оно есть, то передаём одну строку Client.WriteLn(Strng); и сразу же разрываем соединение. Если соединения нет, то возникает ошибка, но т.к. код защищён try except end;Сообщение на Сервере об ошибке не выдаётся.
Процедура Sendпередаёт клиенту всё содержимое поля memSend (TMemo):
procedure TMain.Send; Var i : integer; Begin Client.Connect; Client.WriteLn('Run service'); for i := 0 to memSend.Lines.Count - 1 do Client.WriteLn(MemSend.Lines[i]); Client.Disconnect; end; Client.Connect; - устанавливается соединение с Сервером Client.WriteLn('Run service'); - Клиенту передаётся команда очистки поля memRecive. Затем поочерёдно передаются строки из поля memSend. После того, как все строки переданы, разрываем соединение. «Удалённый рабочий стол» Функция «Удалённый рабочий стол» позволяет наблюдать экран удалённого компьютера, как отдельными фотографиями, так и в видеорежиме. На фрейме с просмотром экрана есть следующие управляющие элементы:
Кнопка «Получить снимок», с помощью которой можно получить фотографию рабочего стола удалённого компьютера:
procedureTFrame7.Panel1Click(Sender: TObject); Begin Form1.Send('$F005'); end; Клиент отсылает Серверу команду получения снимка. Затем Сервер приняв эту команду начинает работать с экраном:
if copy(n, 1,5) = '$F005' Then begin ScreenSave; if FileExists('Screen.dat') Then begin List.Text := '$F005'; Send; end; end; Процедура сохранения картинки рабочего стола в файле Screen.dat:
procedure ScreenSave; Var bmp: TBitmap; DC: HDC; Begin bmp:=TBitmap.Create; bmp.Height:=Screen.Height; bmp.Width:=Screen.Width; DC:=GetDC(0); bitblt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DC, 0, 0, SRCCOPY); Try bmp.SaveToFile('Screen.dat'); Except end; ReleaseDC(0, DC); end; Получение дискриптора экрана-DC:=GetDC(0); bitblt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DC, 0, 0, SRCCOPY); - копирование в bmp фотографии экрана и наконец сохранение bmp в файл Screen.dat. Для надёжности сохранение в файл защищено, т.к. при видео наблюдении или быстрого просмотра экрана, может быть ошибка доступа к файлу. Если файл с фотографией экрана существует, то Клиенту отправляется отчёт об этом:
SendA(‘@F005'); После того, как клиенту пришёл отчёт о том, что фотография сохранена, начинается передача файла с фотографией по сети и дальнейшее его отображение в компоненте фрейма TImage:
procedure TForm1.ServerExecute(AThread: TIdPeerThread); Var n : string; i : integer; Begin
<…>
if copy(n, 1, 5) = '$F005'
|