Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать скриншот с компьютера в локальной сети? [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]

Помогите ПЛЗ!!!


Наверх

Титульная страница Поиск, карта сайта Написать письмо