📄 fileandclientinfoctrlunit.pas
字号:
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 + -