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

📄 outtool.pas

📁 wince下接受网络控制命令进行相应操作,远程控制的东西
💻 PAS
📖 第 1 页 / 共 2 页
字号:
            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 + -