用delphi獲得當前系統進程列表?


如題。能說下詳細的步驟嗎?最好加注釋。得到后怎么結束進程呢?

6 个解决方案

#1


使用processfirst和processNext;

#2


能詳細些嗎?

#3


顯示進程:
procedure TForm1.Timer1Timer(Sender: TObject);
 Var
   FrmHandle:HWND;
   Len:Integer;
   Str:array[0..255] Of Char;
 Begin
   ListBox1.Clear;
   FrmHandle:=GetWindow(Handle,GW_HWNDFIRST);
   While FrmHandle<>0 Do
     Begin
       If GetWindowText(FrmHandle,@Str,255)>0 Then
          ListBox1.Items.Add(StrPas(@Str));
       FrmHandle:=GetWindow(FrmHandle,GW_HWNDNEXT);
     End;
 End;
關閉進程:
procedure TForm1.Button1Click(Sender: TObject);
 Var
   Str:pchar;
   FindHandle:HWND;
 Begin
   Str:=Pchar(ListBox1.Items[ListBox1.itemindex]);
   FindHandle:=FindWindow(nil,Str);
   If FindHandle<>0 Then
      SendMessage(FindHandle,WM_CLOSE,0,0);
 End;

#4


《DELPHI 5 開發人員指南》有講的呀,要多看書呀

#5


好,回去看看.謝謝

#6


uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, TLHelp32, ComCtrls;

type
  TProcessInfo=Record
                 ExeFileName:String;
                 ProcessID:DWord;
               end;
。。。。
var
  p:TProcessInfo;
  OK:Bool;
  ProcessListHandle:THandle;
  ProcessStruct:TProcessEntry32;
begin
  result:=false;
  ProcessListHandle:=CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0);
  ProcessStruct.dwSize:=SizeOf(ProcessStruct);
  OK:=Process32First(ProcessListHandle,ProcessStruct);
  while Integer(OK)<>0 do
    begin
      p.ExeFileName:=ProcessStruct.szExeFile;
//      p.ProcessID:=ProcessStruct.th32ProcessID;
      OK:=Process32Next(ProcessListHandle,ProcessStruct);
      memo1.lines.add(p.ExeFileName);
    end;
  closehandle(ProcessListHandle);  
end;

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com