DM5314_UExplorer.pas
上传用户:hndmjx
上传日期:2014-09-16
资源大小:3369k
文件大小:17k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit DM5314_UExplorer;
  2. interface
  3. uses     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  4.   Dialogs,WinSock,DM5314_UCommandsAndUtils;
  5.                
  6.   procedure Init_Winsock ();
  7.   procedure CleanUP_winsock();
  8.    procedure ICDownloadFile(SaveFile : string; Port : string);
  9.    procedure ICUploadFile ( OpenFile : string; Port : string );
  10.   function DownloadDataListen(SaveFile : string; Port : string):string;
  11.  Function DownloadDataConnect(SaveFile : string  ;Ipadress : string; PORT : string): string ;
  12.   procedure GetUpload(OpenFile : String;Ipadress : string; port : string) ;
  13.   procedure GetDownload(SaveFile : string  ;Ipadress : string; port : string) ;
  14.   function DownloadScreenShotConnect(SaveFile : string  ;Ipadress : string; PORT : string): string ;
  15.  procedure DownloadScreenshotListen(SaveFile : string; Port : string);
  16.   procedure TypeofCapture  (value : integer);
  17.    var
  18.   wsa_Data  : WSADATA;
  19.   nErrorStatus : integer;
  20. Abortar  : Boolean = FALSE;
  21.     HorzRes, VertRes: Word;
  22.     TypeCapture : integer;
  23. implementation
  24.  uses Mainform,UfrmCapture;
  25.  procedure TypeofCapture  (value : integer);
  26.  begin
  27.    TypeCapture :=value;
  28.  end;
  29.  procedure GetResJpg(JPGFile: string);
  30. const
  31.   BufferSize = 50;
  32. var
  33.   Buffer: string;
  34.   Index: integer;
  35.   FileStream: TFileStream;
  36.   DP: Byte;
  37.   Measure: string;
  38. begin
  39.   FileStream := TFileStream.Create(JPGFile,
  40.     fmOpenReadWrite);
  41.   try
  42.     SetLength(Buffer, BufferSize);
  43.     FileStream.Read(buffer[1], BufferSize);
  44.     Index := Pos('JFIF' + #$00, buffer);
  45.     if Index > 0 then
  46.     begin
  47.       FileStream.Seek(Index + 6, soFromBeginning);
  48.       FileStream.Read(DP, 1);
  49.       case DP of
  50.         1: Measure := 'DPI'; //Dots Per Inch
  51.         2: Measure := 'DPC'; //Dots Per Cm.
  52.       end;
  53.       FileStream.Read(HorzRes, 2); // x axis
  54.       HorzRes := Swap(HorzRes);
  55.       FileStream.Read(VertRes, 2); // y axis
  56.       VertRes := Swap(VertRes);
  57.     end
  58.   finally
  59.     FileStream.Free;
  60.   end;
  61. end;
  62.  function DownloadScreenShotConnect(SaveFile : string  ;Ipadress : string; PORT : string): string ;
  63.  var addr : TSockAddrIn;
  64.      addrserver : TSockAddrIn;
  65.      BytesRead, sinsize : Integer;
  66.        client      : TSocket;
  67.      a          : THandle;
  68.      Buffer     : array [ 1..2048 ] of Char;
  69.      BytesWrite : DWORD;
  70.      FileStatus : Boolean;
  71.      Data : string;
  72.     begin
  73.   Client := socket(AF_INET, SOCK_STREAM, 0);
  74.   if (Client <> INVALID_SOCKET)   THEN BEGIN
  75.   addr.sin_family := AF_INET;
  76.   addr.sin_port := 0;
  77.   addr.sin_addr.s_addr := htonl(INADDR_ANY);
  78.   end;
  79.  if (bind(Client ,addr,sizeof(addr))= INVALID_SOCKET ) then begin
  80.  halt;
  81.  end;
  82.  addrserver.sin_family := AF_INET;
  83.  addrserver.sin_port := htons(strtoint(PORT));
  84.  addrserver.sin_addr.s_addr := inet_addr(pchar(Ipadress));
  85.  if (connect(Client, addrserver,sizeof(addrserver)) =SOCKET_ERROR) then begin
  86.  //messagebox(0,'dddddddddddd','ddddddddd',0);
  87.  end;
  88.    BytesWrite := 0;
  89.     try
  90.         a := CreateFile( PChar(SaveFile) , GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
  91.     except
  92.         CloseSocket(Client );
  93.         Exit;
  94.     end;
  95.     repeat BytesRead  := Recv( client, Buffer, SizeOf( Buffer ), 0 );
  96.            FileStatus := WriteFile( a, Buffer, BytesRead, BytesWrite, nil );
  97.              if  TypeCapture=0 then begin
  98.               frmMain.ProgressBarDesk.Position:=frmMain.ProgressBarDesk.Position + 2;
  99.                end
  100.                else
  101.                begin
  102.                frmMain.ProgressBarCam.Position:=frmMain.ProgressBarCam.Position + 2;
  103.                end;
  104.             Data:=Data +    Buffer ;
  105.     until  ( FileStatus = FALSE ) or ( BytesRead = -1 ) or (BytesRead = 0) or ( Abortar );
  106.     CloseHandle( a );
  107.     try CloseSocket( client );  except end;
  108.     Abortar := FALSE;
  109.  if  TypeCapture=0 then begin
  110. if  FileExists('Screenshotsdesk.jpg') then begin
  111. frmMain.ProgressBarDesk.position:=frmMain.ProgressBarDesk.Max;
  112. frmMain.ImgScreenshot.Picture.LoadFromFile(GetLocalPath +'Screenshotsdesk.jpg');
  113. end;
  114.     end
  115.     else
  116.     begin
  117. if  FileExists('Screenshotscam.jpg') then begin
  118. frmMain.ProgressBarCam.position:=frmMain.ProgressBarCam.Max;
  119. frmMain.ImgWebcam.Picture.LoadFromFile(GetLocalPath +'Screenshotscam.jpg');
  120. end;
  121. end;
  122.     result:=Data;
  123.  end;
  124.  procedure DownloadScreenshotListen(SaveFile : string; Port : string);
  125. var addr : TSockAddrIn;
  126.     BytesRead, sinsize : Integer;
  127.     sock, cliente      : TSocket;
  128.     a          : THandle;
  129.     Buffer     : array [ 1..2048 ] of Char;
  130.     BytesWrite : DWORD;
  131.     FileStatus : Boolean;
  132. begin
  133.     addr.sin_family := AF_INET;
  134.     addr.sin_port := htons(strtoint(PORT));
  135.     addr.sin_addr.S_addr := INADDR_ANY;
  136.     //Abre el socket
  137.     sock :=  Socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
  138.     if Bind( sock, addr, SizeOf( addr ) ) = SOCKET_ERROR then
  139.        Exit;
  140.     if Listen(sock, 1) = SOCKET_ERROR then
  141.        Exit;
  142.     //Espera una conexion
  143.     sinsize := SizeOf( addr );
  144.     cliente := Accept( sock, @addr, @sinsize );
  145.     BytesWrite := 0;
  146.     try
  147.         a := CreateFile( PChar( SaveFile  ), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
  148.         //   Server_Send('9^Uploading File: ' +  GetFileName(SaveFile)+ '^');
  149.     except
  150.         CloseSocket( sock );
  151.         Exit;
  152.     end;
  153.     repeat BytesRead  := Recv( cliente, Buffer, SizeOf( Buffer ), 0 );
  154.            FileStatus := WriteFile( a, Buffer, BytesRead, BytesWrite, nil );
  155.                if  TypeCapture=0 then begin
  156.               frmMain.ProgressBarDesk.Position:=frmMain.ProgressBarDesk.Position + 2;
  157.                end
  158.                else
  159.                begin
  160.                frmMain.ProgressBarCam.Position:=frmMain.ProgressBarCam.Position + 2;
  161.                end;
  162.     until  ( FileStatus = FALSE ) or ( BytesRead = -1 ) or (BytesRead = 0) or ( Abortar );
  163.     CloseHandle( a );
  164.        try CloseSocket( cliente );  except end;
  165.     try CloseSocket( sock ); except end;
  166.     Abortar := FALSE;
  167.  if  TypeCapture=0 then begin
  168. if  FileExists('Screenshotsdesk.jpg') then begin
  169. frmMain.ProgressBarDesk.position:=frmMain.ProgressBarDesk.Max;
  170. frmMain.ImgScreenshot.Picture.LoadFromFile(GetLocalPath +'Screenshotsdesk.jpg');
  171. end;
  172.     end
  173.     
  174.     else
  175.     begin
  176.    if  FileExists('Screenshotscam.jpg') then begin
  177. frmMain.ProgressBarCam.position:=frmMain.ProgressBarCam.Max;
  178. frmMain.ImgWebcam.Picture.LoadFromFile(GetLocalPath +'Screenshotscam.jpg');
  179. end;
  180.     end;
  181. end;
  182. procedure GetDownload(SaveFile : string  ;Ipadress : string; PORT : string) ;
  183.  var addr : TSockAddrIn;
  184.      addrserver : TSockAddrIn;
  185.      BytesRead, sinsize : Integer;
  186.        client      : TSocket;
  187.      a          : THandle;
  188.      Buffer     : array [ 1..2048 ] of Char;
  189.      BytesWrite : DWORD;
  190.      FileStatus : Boolean;
  191.     begin
  192.   Client := socket(AF_INET, SOCK_STREAM, 0);
  193.   if (Client <> INVALID_SOCKET)   THEN BEGIN
  194.   addr.sin_family := AF_INET;
  195.   addr.sin_port := 0;
  196.   addr.sin_addr.s_addr := htonl(INADDR_ANY);
  197.   end;
  198.  if (bind(Client ,addr,sizeof(addr))= INVALID_SOCKET ) then begin
  199.  halt;
  200.  end;
  201.  addrserver.sin_family := AF_INET;
  202.  addrserver.sin_port := htons(strtoint(PORT));
  203.  addrserver.sin_addr.s_addr := inet_addr(pchar(Ipadress));
  204.  if (connect(Client, addrserver,sizeof(addrserver)) =SOCKET_ERROR) then begin
  205.  //messagebox(0,'dddddddddddd','ddddddddd',0);
  206.  end;
  207.    BytesWrite := 0;
  208.     try
  209.         a := CreateFile( PChar(SaveFile) , GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
  210.     except
  211.         CloseSocket(Client );
  212.         Exit;
  213.     end;
  214.     repeat BytesRead  := Recv( client, Buffer, SizeOf( Buffer ), 0 );
  215.            FileStatus := WriteFile( a, Buffer, BytesRead, BytesWrite, nil );
  216.  frmMain.ProgressBarExplorer.Position:=frmMain.ProgressBarExplorer.Position+ 2;
  217.     until  ( FileStatus = FALSE ) or ( BytesRead = -1 ) or (BytesRead = 0) or ( Abortar );
  218.     CloseHandle( a );
  219.     try CloseSocket( client );  except end;
  220.     Abortar := FALSE;
  221.  end;
  222. procedure GetUpload(OpenFile : String;Ipadress : string; PORT : string) ;
  223.  var addr : TSockAddrIn;
  224.      addrserver : TSockAddrIn;
  225.      sinsize : Integer;
  226.      sock, client      : TSocket;
  227.      a          : THandle;
  228.      Archivo      : THandle;
  229.      Buffer       : array [ 1..1024 ] of Char;
  230.      FileStatus : Boolean;
  231.      BytesRead    : DWord;
  232.      Error     : Boolean;
  233.       size : longint ;
  234.       f   : file ;
  235. begin
  236.   Client := socket(AF_INET, SOCK_STREAM, 0);
  237.   if (Client <> INVALID_SOCKET)   THEN BEGIN
  238.   addr.sin_family := AF_INET;
  239.   addr.sin_port := 0;
  240.   addr.sin_addr.s_addr := htonl(INADDR_ANY);
  241.   end;
  242.  if (bind(Client ,addr,sizeof(addr))= INVALID_SOCKET ) then begin
  243.  halt;
  244.  end;
  245.  addrserver.sin_family := AF_INET;
  246.  addrserver.sin_port := htons(strtoint(port));
  247.  addrserver.sin_addr.s_addr := inet_addr(pchar(Ipadress));
  248.  if (connect(Client, addrserver,sizeof(addrserver)) =SOCKET_ERROR) then begin
  249.  //messagebox(0,'dddddddddddd','ddddddddd',0);
  250.  end;
  251.                  
  252.                         
  253.    try
  254.         AssignFile(f, OpenFile);
  255.              Reset(f);
  256.              try
  257.              size :=FileSize(f)*128 div 1024;
  258.               frmMain.lblFTPSize.Caption:= inttostr(size);
  259.             frmMain.ProgressBarExplorer.Max:=size;
  260.               if size<1 then begin
  261.             frmMain.ProgressBarExplorer.Max:=1;
  262.               end;
  263.              finally
  264.              CloseFile(f);
  265.              end;
  266.           Archivo := CreateFile( PChar( OpenFile ),
  267.                                  GENERIC_READ,
  268.                                  0, nil,
  269.                                  OPEN_EXISTING,
  270.                                  FILE_ATTRIBUTE_NORMAL, 0);
  271.           SetFilePointer( Archivo, 0, nil, FILE_BEGIN );
  272.      except
  273.           CloseSocket( sock );
  274.           Exit;
  275.      end;
  276.                                  
  277.      repeat
  278.           Error := ReadFile(Archivo, Buffer, SizeOf( Buffer ), BytesRead, nil);
  279.           Send(Client, Buffer, BytesRead, 0);
  280.         frmMain.ProgressBarExplorer.Position:= frmMain.ProgressBarExplorer.Position +1;
  281.      until ( Error  ) and ( BytesRead = 0 );
  282.      CloseHandle( Archivo );
  283.      try CloseSocket( client ); except end;
  284.      Abortar := FALSE;
  285. end;
  286. procedure ICUploadFile ( OpenFile : string; Port : string );
  287. //The server should send a file to the client
  288. var  addr         : TSockAddrIn;
  289.      sinsize      : Integer;
  290.      sock,cliente : TSocket;
  291.      Archivo      : THandle;
  292.      Buffer       : array [ 1..1024 ] of Char;
  293.      BytesRead    : DWord;
  294.      Error     : Boolean;
  295.       size : longint ;
  296.       f   : file ;
  297. begin
  298.      addr.sin_family := AF_INET;
  299.      addr.sin_port := htons(strtoint(PORT) );
  300.      addr.sin_addr.S_addr := INADDR_ANY;
  301.      //Open the socket
  302.      sock :=  Socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
  303.      if Bind(sock, addr, SizeOf( addr ) ) = SOCKET_ERROR then
  304.         Exit;
  305.      if Listen(sock, 1) = SOCKET_ERROR then
  306.      begin
  307.           try CloseSocket( Sock ); except end;
  308.           Exit;
  309.      end;
  310.      //Espera una conexion
  311.      sinsize := SizeOf( addr );
  312.      cliente := Accept( sock, @addr, @sinsize );
  313.      try
  314.         AssignFile(f, OpenFile);
  315.              Reset(f);
  316.              try
  317.              size :=FileSize(f)*128 div 1024;
  318.               frmMain.lblFTPSize.Caption:= inttostr(size);
  319.              frmMain.ProgressBarExplorer.Max:=size;
  320.               if size<1 then begin
  321.              frmMain.ProgressBarExplorer.Max:=1;
  322.               end;
  323.              finally
  324.              CloseFile(f);
  325.              end;
  326.           Archivo := CreateFile( PChar( OpenFile ),
  327.                                  GENERIC_READ,
  328.                                  0, nil,
  329.                                  OPEN_EXISTING,
  330.                                  FILE_ATTRIBUTE_NORMAL, 0);
  331.           SetFilePointer( Archivo, 0, nil, FILE_BEGIN );
  332.            // Server_Send('9^Downloading File: ' +  GetFileName(OpenFile) + '^');
  333.      except
  334.           CloseSocket( sock );
  335.           Exit;
  336.      end;                            
  337.      Sleep( 150 );
  338.      repeat
  339.           Error := ReadFile(Archivo, Buffer, SizeOf( Buffer ), BytesRead, nil);
  340.           Send( cliente, Buffer, BytesRead, 0);
  341.         frmMain.ProgressBarExplorer.Position:= frmMain.ProgressBarExplorer.Position +1
  342.      until ( Error  ) and ( BytesRead = 0 );
  343.     // Server_Send('9^File Downloaded: ' +  GetFileName(OpenFile) + '^') ;
  344.      CloseHandle( Archivo );
  345.      try CloseSocket( cliente ); except end;
  346.      try CloseSocket( sock ); except end;
  347.      Abortar := FALSE;
  348. end;
  349. function DownloadDataConnect(SaveFile : string  ;Ipadress : string; PORT : string): string ;
  350.  var addr : TSockAddrIn;
  351.      addrserver : TSockAddrIn;
  352.      BytesRead, sinsize : Integer;
  353.        client      : TSocket;
  354.      a          : THandle;
  355.      Buffer     : array [ 1..2048 ] of Char;
  356.      BytesWrite : DWORD;
  357.      FileStatus : Boolean;
  358.      Data : string;
  359.     begin
  360.   Client := socket(AF_INET, SOCK_STREAM, 0);
  361.   if (Client <> INVALID_SOCKET)   THEN BEGIN
  362.   addr.sin_family := AF_INET;
  363.   addr.sin_port := 0;
  364.   addr.sin_addr.s_addr := htonl(INADDR_ANY);
  365.   end;
  366.  if (bind(Client ,addr,sizeof(addr))= INVALID_SOCKET ) then begin
  367.  halt;
  368.  end;
  369.  addrserver.sin_family := AF_INET;
  370.  addrserver.sin_port := htons(strtoint(PORT));
  371.  addrserver.sin_addr.s_addr := inet_addr(pchar(Ipadress));
  372.  if (connect(Client, addrserver,sizeof(addrserver)) =SOCKET_ERROR) then begin
  373.  //messagebox(0,'dddddddddddd','ddddddddd',0);
  374.  end;
  375.    BytesWrite := 0;
  376.     try
  377.         a := CreateFile( PChar(SaveFile) , GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
  378.     except
  379.         CloseSocket(Client );
  380.         Exit;
  381.     end;
  382.     repeat BytesRead  := Recv( client, Buffer, SizeOf( Buffer ), 0 );
  383.            FileStatus := WriteFile( a, Buffer, BytesRead, BytesWrite, nil );
  384.             Data:=Data +    Buffer ;
  385.     until  ( FileStatus = FALSE ) or ( BytesRead = -1 ) or (BytesRead = 0) or ( Abortar );
  386.     CloseHandle( a );
  387.     try CloseSocket( client );  except end;
  388.     Abortar := FALSE;
  389.     result:=Data;
  390.  end;
  391.   function DownloadDataListen(SaveFile : string; Port : string):string;
  392. var addr : TSockAddrIn;
  393.     BytesRead, sinsize : Integer;
  394.     sock, cliente      : TSocket;
  395.     a          : THandle;
  396.     Buffer     : array [ 1..2048 ] of Char;
  397.     BytesWrite : DWORD;
  398.     FileStatus : Boolean;
  399.     data : string;
  400. begin
  401.     addr.sin_family := AF_INET;
  402.     addr.sin_port := htons(strtoint(PORT));
  403.     addr.sin_addr.S_addr := INADDR_ANY;
  404.     //Abre el socket
  405.     sock :=  Socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
  406.     if Bind( sock, addr, SizeOf( addr ) ) = SOCKET_ERROR then
  407.        Exit;
  408.     if Listen(sock, 1) = SOCKET_ERROR then
  409.        Exit;
  410.     //Espera una conexion
  411.     sinsize := SizeOf( addr );
  412.     cliente := Accept( sock, @addr, @sinsize );
  413.     BytesWrite := 0;
  414.     try
  415.         a := CreateFile( PChar( SaveFile  ), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
  416.         //   Server_Send('9^Uploading File: ' +  GetFileName(SaveFile)+ '^');
  417.     except
  418.         CloseSocket( sock );
  419.         Exit;
  420.     end;
  421.     repeat BytesRead  := Recv ( cliente, Buffer, SizeOf( Buffer ), 0 );
  422.            FileStatus := WriteFile( a, Buffer, BytesRead, BytesWrite, nil );
  423.             data:=data +     Buffer;
  424.     until  ( FileStatus = FALSE ) or ( BytesRead = -1 ) or (BytesRead = 0) or ( Abortar );
  425.     CloseHandle( a );
  426.     try CloseSocket( cliente );  except end;
  427.     try CloseSocket( sock ); except end;
  428.     Abortar := FALSE;
  429.       result:=data;
  430. end;
  431. procedure ICDownloadFile(SaveFile : string; Port : string);
  432. var addr : TSockAddrIn;
  433.     BytesRead, sinsize : Integer;
  434.     sock, cliente      : TSocket;
  435.     a          : THandle;
  436.     Buffer     : array [ 1..2048 ] of Char;
  437.     BytesWrite : DWORD;
  438.     FileStatus : Boolean;
  439. begin
  440.     addr.sin_family := AF_INET;
  441.     addr.sin_port := htons(strtoint(PORT));
  442.     addr.sin_addr.S_addr := INADDR_ANY;
  443.     //Abre el socket
  444.     sock :=  Socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
  445.     if Bind( sock, addr, SizeOf( addr ) ) = SOCKET_ERROR then
  446.        Exit;
  447.     if Listen(sock, 1) = SOCKET_ERROR then
  448.        Exit;
  449.     //Espera una conexion
  450.     sinsize := SizeOf( addr );
  451.     cliente := Accept( sock, @addr, @sinsize );
  452.     BytesWrite := 0;
  453.     try
  454.         a := CreateFile( PChar( SaveFile  ), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );
  455.         //   Server_Send('9^Uploading File: ' +  GetFileName(SaveFile)+ '^');
  456.     except
  457.         CloseSocket( sock );
  458.         Exit;
  459.     end;
  460.     repeat BytesRead  := Recv( cliente, Buffer, SizeOf( Buffer ), 0 );
  461.            FileStatus := WriteFile( a, Buffer, BytesRead, BytesWrite, nil );
  462.              frmMain.ProgressBarExplorer.Position:=frmMain.ProgressBarExplorer.Position + 2;
  463.     until  ( FileStatus = FALSE ) or ( BytesRead = -1 ) or (BytesRead = 0) or ( Abortar );
  464.     CloseHandle( a );
  465.     try CloseSocket( cliente );  except end;
  466.     try CloseSocket( sock ); except end;
  467.     Abortar := FALSE;
  468. end;
  469. procedure init_winsock ();
  470. begin
  471. nErrorStatus := WSAStartup($101, wsa_Data);
  472. if (nErrorStatus <> 0)  then     begin
  473. //WSAGetLastError()
  474. messagebox(0,pchar(inttostr(nErrorStatus)),'ddddddd',0);
  475. halt;
  476. end;
  477. end;
  478. procedure   CleanUP_winsock();
  479. begin
  480. WSACleanup(); // terminate WinSock uses
  481. end;
  482. end.