![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать скриншот с компьютера в локальной сети? [D5, Win95/98, WinME]
[BAD]Angel © (2002-10-10 14:58:00)Как сделать скриншот с компьютера в локальной сети?
Если можно, куском кода!!!
Rouse_ (2002-10-16 00:08:00) [1]Ложишь на форму TClientSocket и TServerSocket, у клиента Active ставишь False, пишешь в обработчиках следующий код
procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Socket.SendText("send"+IntToStr(TrackBar1.Position));
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
FJpeg:TJpegImage;
Play :Boolean;
s, sl: string;
i:Integer;
begin
s:= Socket.ReceiveText;
if not Reciving then
begin
SetLength(sl, StrLen(PChar(s))+1);
StrLCopy(@sl[1], PChar(s), Length(sl)-1);
DataSize:= StrToInt(sl);
Data:= TMemoryStream.Create;
Delete(s, 1, Length(sl));
Reciving:= true;
end;
try
Data.Write(s[1], length(s));
if Data.Size = DataSize then
begin
Data.Position:= 0;
fjpeg:=TJpegImage.Create;
fjpeg.LoadFromStream(Data);
Image1.Picture.Assign(fjpeg);
fjpeg.Free;
Data.Free;
Reciving:= false;
Socket.Close;
except
Data.Free;
end;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
ms: TMemoryStream;
winHWND: HWND;
winDC: HDC;
Rect: TRect;
fBitmap:TBitmap;
FJpeg:TJpegImage;
Compression:Byte;
tmp:String;
begin
_Sending := True;
Compression := 50;
tmp:= Socket.ReceiveText;
if tmp = "send" then
begin
ms:= TMemoryStream.Create;
try
winHWND := GetDesktopWindow();
winDC := GetDC(winHWND);
fBitmap:=TBitmap.Create;
GetWindowRect(winHWND, rect);
fBitmap.width := rect.right-rect.left;
fBitmap.height := rect.bottom-rect.top;
BitBlt(fBitmap.canvas.handle, 0, 0, fBitmap.width,
fBitmap.height, winDC, 0, 0, SRCCOPY);
Application.ProcessMessages;
ReleaseDC(winHWND, winDC);
FJpeg:=TJpegImage.Create;
FJpeg.Assign(FBitmap);
fBitmap.Free;
FJpeg.CompressionQuality := Compression;
FJpeg.SaveToStream(ms);
fJpeg.Free;
ms.Position:= 0;
Socket.SendText(IntToStr(ms.Size) + #0);
Socket.SendStream(ms);
except
try
if Assigned(fBitmap) then fBitmap.Free;
if Assigned(fJpeg) then fJpeg.Free;
if Assigned(ms) then ms.Free;
except end;
end;
end;
end;
Проверь, я вырезал лишнее, мог что-то пропустить, но принцип такой
Желаю успехов
bobby (2002-10-13 08:54:00) [2]Делаешь 2 приложения, на одном вешаешь TClientSocket, на другом Tserversocket, у них в свойствах задаешь порт, по которому передача, и у клиента айпишник сервера. Далее делаешь клиент.коннект, в проге-клиенте пишешь код сдирания десктопа, и методом клиент.сендбуфер, вроде отправляешь этот десктоп серверу.
Нужен исходик-пиши на мыло.
[BAD]Angel (2002-10-13 02:16:00) [3]А по точнее можно?
AL2002 (2002-10-10 15:19:00) [4]>Song © (10.10.02 15:10)
А пример. Очень интересно.
Song (2002-10-10 15:10:00) [5]1.Клиент-сервер.
2.OpenWindowStation(), OpenDeskTop()
[BAD]Angel (2002-10-10 15:05:00) [6]Помогите ПЛЗ!!!