untProcessList.pas
上传用户:sinothink
上传日期:2022-07-15
资源大小:459k
文件大小:4k
源码类别:

远程控制编程

开发平台:

Delphi

  1. {南域剑盟    www.98exe.com   上兴QQ:51992
  2.  声明:程序由南域剑盟98exe.com成员网上搜集,不承担技术及版权问题}
  3. unit untProcessList;
  4. interface
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, ComCtrls, StdCtrls, Winsock, Menus, untCMDList;
  8. type
  9.   TForm5 = class(TForm)
  10.     TreeView1: TTreeView;
  11.     StatusBar1: TStatusBar;
  12.     PopupMenu1: TPopupMenu;
  13.     Refresh1: TMenuItem;
  14.     N1: TMenuItem;
  15.     EndProcess1: TMenuItem;
  16.     ListModules1: TMenuItem;
  17.     Procedure pAddParent(Name, Threads, PID, hPID: String);
  18.     Procedure pAddChild(dPID, dParent, dName: String);
  19.     procedure Refresh1Click(Sender: TObject);
  20.     procedure EndProcess1Click(Sender: TObject);
  21.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  22.   private
  23.     { Private declarations }
  24.   public
  25.     { Public declarations }
  26.   end;
  27. var
  28.   Form5: TForm5;
  29.   Sock : TSocket;
  30.   Data : String;
  31.   cProc: Integer;
  32.   cMod : Integer;
  33. implementation
  34. {$R *.dfm}
  35. Procedure TForm5.pAddParent(Name, Threads, PID, hPID: String);
  36. Var
  37.   Parent: TTreeNode;
  38.   Child : Array [0..4] Of TTreeNode;
  39. Begin
  40.   Inc(cProc);
  41.   StatusBar1.Panels[2].Text := IntToStr(cProc)+' Processes';
  42.   Parent   := TreeView1.Items.Add(NIL, ExtractFileName(Name));
  43.   Child[0] := TreeView1.Items.AddChild(Parent, 'Path: '+ExtractFilePath(Name));
  44.   Child[1] := TreeView1.Items.AddChild(Parent, 'Threads: '+Threads);
  45.   Child[2] := TreeView1.Items.AddChild(Parent, 'PID: '+PID);
  46.   Child[3] := TreeView1.Items.AddChild(Parent, 'PID Hex: '+hPID);
  47.   Child[4] := TreeView1.Items.AddChild(Parent, 'Modules (0)');
  48. End;
  49. Procedure TForm5.pAddChild(dPID, dParent, dName: String);
  50. Var
  51.   Parent: TTreeNode;
  52.   Count : Integer;
  53.   Name  : String;
  54.   I     : DWord;
  55. Begin
  56.   If (TreeView1.Items.Count <= 0) Then Exit;
  57.   For I := 0 To TreeView1.Items.Count -1 Do
  58.     If (TreeView1.Items[I].Text = dParent) And
  59.        (TreeView1.Items[I].Item[2].Text = 'PID: '+dPID) Then
  60.     Begin
  61.       Parent := TreeView1.Items[I].Item[4];
  62.       Name := Parent.Text;
  63.       Delete(Name, 1, Pos('(', Name));
  64.       Delete(Name, Pos(')', Name), Length(Name));
  65.       Count := StrToInt(Name);
  66.       If (dName <> '') Then
  67.       Begin
  68.         Inc(Count);
  69.         Name := 'Modules ('+IntToStr(Count)+')';
  70.         Parent.Text := Name;
  71.         TreeView1.Items.AddChild(Parent, ':'+dName);
  72.         Inc(cMod);
  73.         StatusBar1.Panels[3].Text := IntToStr(cMod)+' Modules';
  74.       End;
  75.     End;
  76. End;
  77. procedure TForm5.Refresh1Click(Sender: TObject);
  78. begin
  79.   cProc  := 0;
  80.   cMod   := 0;
  81.   TreeView1.Items.Clear;
  82.   Popupmenu1.Items[1].Enabled := False;
  83.   Sock := StrToInt(StatusBar1.Panels[0].Text);
  84.   If (ListModules1.Checked) Then
  85.     Data := IntToStr(C_PROCESSLIST)+' 1'#10
  86.   Else
  87.     Data := IntToStr(C_PROCESSLIST)+' 0'#10;
  88.   Send(Sock, Data[1], Length(Data), 0);
  89. end;
  90. procedure TForm5.EndProcess1Click(Sender: TObject);
  91. var
  92.   I: Word;
  93. begin
  94.   For I := 0 To TreeView1.Items.Count -1 Do
  95.     If (TreeView1.Items[I].Selected) and
  96.        (TreeView1.Items[I].Text[1] <> ':') and
  97.        (TreeView1.Items[I].Text[1] <> 'P') and
  98.        (TreeView1.Items[I].Text[1] <> 'M') and
  99.        (TreeView1.Items[I].Text[1] <> 'T') Then
  100.        Begin
  101.          Data := IntToStr(C_ENDPROCESS) + ' ' +
  102.                  Copy(TreeView1.Items[I].Item[2].Text, 6, 20) + #10;
  103.          Send(Sock, Data[1], Length(Data), 0);
  104.          Refresh1.Click;
  105.          Break;
  106.        End;
  107. end;
  108. procedure TForm5.FormClose(Sender: TObject; var Action: TCloseAction);
  109. begin
  110.   StatusBar1.Panels[0].Text := '0';
  111. end;
  112. end.