📄 outtool.pas
字号:
mmo1.Lines.Add('执行结果:"下位机屏幕信息已提交完毕!"');
except
mmo1.Lines.Add('执行结果:"下位机屏幕信息获取失败!"');
end;
end
else
begin
mmo1.Lines.Add(fstr) ;
end;
end;
10:
begin
//发送要提取的日志日期
str_LogDate := FormatDateTime('YYYY-MM-DD',dtpLg.Date);//DateToStr(dtpLg.Date);
StrSend := 'GetLog:'+str_LogDate+'.txt';
TcpC.WriteLn(StrSend);
mmo1.Lines.Add('执行指令:"获取日志文件!"');
try
fstr := TcpC.ReadLn();
except
mmo1.Lines.Add('执行结果:"下位机异常!"');
end;
if Pos('LogLength:',fstr)>0 then
begin
Delete(fstr,1,10);
i := StrToInt(trim(fstr));
DeleteFile('TempLog.txt');
try
fstream := TFileStream.Create('TempLog.txt',fmCreate);
TcpC.ReadStream(fstream, i);
fstream.Free;
btnLog.Enabled := True;
mmo1.Lines.Add('执行结果:"日志文件已提交完毕!"');
except
btnLog.Enabled := False;
mmo1.Lines.Add('执行结果:"日志文件获取失败!"');
end
end
else
begin
mmo1.Lines.Add(fstr);
end;
end;
end;
end;
procedure TfmTool.rg1Click(Sender: TObject);
begin
if rg1.ItemIndex = 6 then
begin
dtp1.Time := Now;
cbb1.Visible := True;
grp2.Visible := True;
end
else
begin
cbb1.Visible := False;
grp2.Visible := False;
end;
if rg1.ItemIndex = 5 then
begin
lbl3.Visible := True;
IPAddress2.Address := IPAddress1.Address;
IPAddress2.Visible := True
end
else
begin
lbl3.Visible := False;
IPAddress2.Visible := False;
end;
if rg1.ItemIndex = 4 then
begin
lbl4.Visible := True;
edt3.Visible := True;
end
else
begin
lbl4.Visible := False;
edt3.Visible := False;
end;
if rg1.ItemIndex = 8 then
begin
edtSearch.Visible := True;
btnSearch.Visible := True;
end
else
begin
edtSearch.Visible := False;
btnSearch.Visible := False;
end;
if rg1.ItemIndex = 9 then
begin
btnScreen.Visible := True;
end
else
begin
btnScreen.Visible := False;
btnScreen.Enabled := False;
rg2.Visible := False;
edt4.Visible := False;
end;
if rg1.ItemIndex = 10 then
begin
dtpLg.Visible := True;
btnLog.Visible := True;
lblLog.Visible := True;
dtpLg.Visible := True;
end
else
begin
lblLog.Visible := False;
dtpLg.Visible := False;
btnLog.Visible := False;
btnLog.Enabled := False;
end;
end;
procedure TfmTool.medtPortKeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9', #8]) then
begin
Key := #0;
end;
end;
procedure TfmTool.btnCloseConClick(Sender: TObject);
begin
try
TcpC.Disconnect;
rg1.Enabled := False;
mmo1.Lines.Add('Connect is Close !') ;
except
ShowMessage('网络正忙,请稍后断开');
Exit;
end;
end;
procedure TfmTool.cbb1Change(Sender: TObject);
begin
if cbb1.ItemIndex = 1 then
begin
grp2.Visible := False;
end
else
begin
grp2.Visible := True;
end;
end;
procedure TfmTool.btn2Click(Sender: TObject);
begin
StrSend := 'MonthReset:0;';
TcpC.WriteLn(StrSend);
mmo1.Lines.Add('执行指令:"获取系统设定的值(月)"');
try
edt1.Text := TcpC.ReadLn();
except
edt1.Text :='';
end;
mmo1.Lines.Add('执行结果: ' + edt1.Text);
end;
procedure TfmTool.btn3Click(Sender: TObject);
begin
StrSend := 'WeekReset:0;' ;
TcpC.WriteLn(StrSend);
mmo1.Lines.Add('执行指令:"获取系统设定的值(周)"');
try
edt2.Text := TcpC.ReadLn();
except
edt2.Text :='';
end;
mmo1.Lines.Add('执行结果: ' + edt2.Text);
end;
procedure TfmTool.btn4Click(Sender: TObject);
begin
StrSend := 'DayReset:0;' ;
TcpC.WriteLn(StrSend);
mmo1.Lines.Add('执行指令:"获取系统设定的值(天)"');
try
dtp1.Time := StrToDateTime(TcpC.ReadLn());
except
dtp1.Time := StrToDateTime('00:00:00');
end;
mmo1.Lines.Add('执行结果: ' + FormatDateTime('HH:MM:SS',dtp1.Time));
end;
procedure TfmTool.btnSearchClick(Sender: TObject);
var
sName :string;
begin
if dlgOpen1.Execute then
begin
edtSearch.Text := dlgOpen1.FileName;
end;
sName := edtSearch.Text;
while Pos('\',sName)>0 do
Delete(sName,1,Pos('\',sName));
if sName<>'amce300.exe' then
begin
edtSearch.Text := '';
Application.MessageBox('请选择正确的下位机程序!','ERROR',MB_OK);
end;
end;
procedure TfmTool.FormClose(Sender: TObject; var Action: TCloseAction);
begin
try
TcpC.Disconnect;
except
end;
end;
procedure TfmTool.btn6Click(Sender: TObject);
//const
var
hEnum, dwResult, dwResultEnum : DWORD;
cbBuffer : DWORD;
lpnrLocal : array [0..16384 div SizeOf(TNetResource)] of TNetResource;
//指向列表结构的指针
i : integer;
cEntries : Longint;
lpnr: PNetResource ;
Ipstr :string;
begin
centries := -1;
cbBuffer := 16384;
//调用WNetOpenEnum()函数
dwResult := WNetOpenEnum(
RESOURCE_CONTEXT, //列出当前已连接的网络资源 -
RESOURCETYPE_DISK, //所有资源
0, //列出所有资源
lpnr, //函数第一次调用时此值为空
hEnum //资源句柄
);
if (dwResult <> NO_ERROR) then
begin
//Result := False;
Exit;
end;
//初始化缓冲区
FillChar( lpnrLocal, cbBuffer, 0 );
//调用WNetEnumResource()函数
dwResultEnum :=WNetEnumResource(hEnum, {资源句柄}DWORD(cEntries),@lpnrLocal,cbBuffer); //缓冲区大小
for i := 0 to cEntries - 1 do
begin
//循环,获得网络资源名(lpnrLocal[i].lpRemoteName)
//lst2.Items.Add(lpnrLocal[i].lpRemoteName);
Ipstr := Copy(lpnrLocal[i].lpRemoteName,3,Length(lpnrLocal[i].lpRemoteName)-2);
if trim(Ipstr)<>'' then
lst2.Items.Add(GetIpByHostname(Ipstr));
end;
//调用WNetCloseEnum()函数
dwResult := WNetCloseEnum(hEnum);
{
if(dwResult <> NO_ERROR) then
begin
Result := False;
end
else
Result := True;
end; }
end;
function TfmTool.GetIpByHostname(HName :string):string;
var
wsaD : TWSAData;
pheHostEnt : PHostEnt;
stMName, stIP : String;
begin
stMName := HName; //要获取IP的计算机的名字
WSAStartup(2, wsaD); //初始化Winsock DLL
pheHostEnt := GetHostByName(PChar(stMName)); //取主机信息
if pheHostEnt <> nil then
begin
with pheHostEnt^ do
stIP := Format('%d.%d.%d.%d',[Byte(h_addr^[0]),Byte(h_addr^[1]),Byte(h_addr^[2]),Byte (h_addr^[3])]); //格式化IP地址
end;
WSACleanup;
Result := stIP;
end;
procedure TfmTool.rg2Click(Sender: TObject);
begin
if rg2.ItemIndex=2 then edt4.Visible := False
else
edt4.Visible := True;
end;
{ TTSearchHostThread }
procedure TTSearchHostThread.Execute;
begin
inherited;
FreeOnTerminate:=True;
SearchHost;
end;
procedure TTSearchHostThread.SearchHost();
var
i :Integer;
sIP :string;
begin
for i := 1 to 254 do
begin
sIP := '192.168.0.' + IntToStr(i);
if Ping(sIP) then
begin
SearchGridObj.RowCount := SearchGridObj.RowCount + 1;
SearchGridObj.Cells[0,SearchGridObj.RowCount-2] := sIP;
SearchGridObj.Cells[1,SearchGridObj.RowCount-2] := GetNameByIP(sIP);
end;
end;
end;
procedure TfmTool.btn5Click(Sender: TObject);
begin
strGrid.ColWidths[0] := 90;
strGrid.ColWidths[1] := 90;
strGrid.RowCount := 0;
strGrid.Rows[1].Clear;
fmTool.Width := 590 + 220 ;
btn02.Visible := True;
btn5.Enabled := False;
M_SearchHostThread := TTSearchHostThread.Create(True);
M_SearchHostThread.M_SearchGridObj := strGrid;
M_SearchHostThread.Resume;
end;
procedure TfmTool.btnStopClick(Sender: TObject);
begin
try
M_SearchHostThread.Terminate;
M_SearchHostThread :=nil;
btnStop.Enabled := False;
except
end;
end;
procedure TfmTool.btn02Click(Sender: TObject);
begin
fmTool.Width := 590 ;
btn02.Visible := False;
btn01.Visible := True;
end;
procedure TfmTool.btn01Click(Sender: TObject);
begin
fmTool.Width := 590 + 220 ;
btn02.Visible := True;
btn01.Visible := False;
end;
procedure TfmTool.strGridSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
begin
if trim(strGrid.Cells[0,ARow])<>'' then
IPAddress1.Address := strGrid.Cells[0,ARow];
end;
procedure TfmTool.btnScreenClick(Sender: TObject);
begin
Application.CreateForm(TfrmViewScreen, frmViewScreen);
if frmViewScreen.ShowModal = mrOK then
begin
end;
frmViewScreen.Free;
end;
function TfmTool.CheckLogDate(strDate: string): Boolean;
begin
end;
procedure TfmTool.btnLogClick(Sender: TObject);
begin
Application.CreateForm(TfrmLog, frmLog);
if frmLog.ShowModal = mrOK then
begin
end;
frmLog.Free;
end;
end.
//{-------------------------------------------------------------------------------
// 过程名: TFrmMain.SendFile
// 作者: lh
// 日期: 2005.10.09
// 参数: ip, FileName: string
// 返回值: 无
// 功能:实现向特定的IP地址发送文件
//-------------------------------------------------------------------------------}
//procedure TFrmMain.SendFile(ip, FileName: string);
//var
// FileStream : TFileStream;
// Posi, len : integer;
// p : array[0..1023] of char;
// i : integer;
// Command : string;
// sFileName : string; //把传来的文件路径中文件名取出来
//begin
// //向指定的IP发送该文件
// if (trim(ip) = '') or (trim(FileName) = '') then
// begin
// ShowMessage('IP地址或文件路径为空');
// exit;
// end;
// FileStream := TFileStream.Create(FileName, fmOpenRead);
// //if PTCPServerMan(Clients.Items[i]).ip = trim(ip) then //Pointer(pchar(SendText.text))^,length(sendtext.Text),
// // begin
// // Send(PTCPServerMan(Clients.Items[i]).Sock, Pointer(Pchar(Command + EOL))^, length(Command + EOL), 0);
// // break;
// // end;
// while true do
// begin
// if PosEX('\', FileName) > 0 then
// begin
// Delete(FileName, 1, PosEX('\', FileName));
// end
// else
// begin
// break;
// end;
// end;
// i := Clients.Count;
// i := 0;
// for i := 0 to Clients.Count - 1 do
// begin
// if trim(ip) = PTCPServerMan(Clients.Items[i]).ip then
// begin
// //发送
// //TIdPeerThread(TCPServer.Threads.LockList.Items[i]).Connection.WriteLn('SendFile:<' + FileName + '><' + IntToStr(FileStream.Size) + '>');
// // SendCommand(IP,'SendFile:<' + FileName + '><' + IntToStr(FileStream.Size) + '>');
// Command := 'SendFile:<' + FileName + '><' + IntToStr(FileStream.Size) + '>';
// if LowerCase(FileName) <> 'am300c.ini' then
// Command := 'SendFile:<' + '\音乐\音乐文件\' + FileName + '><' + IntToStr(FileStream.Size) + '>';
// try
// Send(PTCPServerMan(Clients.Items[i]).Sock, Pointer(Pchar(Command + EOL))^, length(Command + EOL), 0);
// except
// end;
// Posi := 0;
// len := 1024;
// while Posi < FileStream.Size do
// begin
// if FileStream.Size - Posi < len then
// len := FileStream.Size - Posi;
// FileStream.Read(p, len);
// //for I:=1 to len do str[i]:=p^[i];
// //str:=String(p);
// Inc(Posi, len);
// //TCPClient.Write(p);
// //TIdPeerThread(TCPServer.Threads.LockList.Items[i]).Connection.WriteBuffer(p, len, true);
// //SendCommand(IP,p);
// try
// Send(PTCPServerMan(Clients.Items[i]).Sock, p, length(p), 0);
// except
// end;
// // TCPClient.WriteBuffer(p,len);
// Application.ProcessMessages;
//
// end;
//
// end;
// end;
// FileStream.Free;
// FileStream := nil;
// //TCPServer.Threads.UnlockList;
// //}
//end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -