如何实现一个和WIN2000任务管理器的程序,把进程都读出来,然后可以选择一个进程把它结束,急啊,哪位帮忙一下。

解决方案 »

  1.   

    显示本机进程、服务、连接的小工具 (含源代码)网上的,,你下载看看吧!
    http://asp.itdrp.com/hottey/delphi.rar
      

  2.   

    procedure ProcessList;
    var
      ok: Bool;
      ProcessListHandle: cardinal;
      ProcessStruct: TProcessEntry32;
    begin
      ProcessListHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
      ProcessStruct.dwSize := Sizeof(ProcessStruct);
      ok := Process32First(ProcessListHandle, ProcessStruct);
      while Integer(ok) <> 0 do
      begin
        //ProcessStruct.szExeFile; 
        //IntTostr(ProcessStruct.th32ProcessID); 进程号
        ok := Process32Next(ProcessListHandle, ProcessStruct);
      end;
      CloseHandle(ProcessListHandle);
    end;Procedure killProcess(pid:cardinal);
    var
      phandle,pendcode:cardinal;
    begin
      phandle := openProcess(PROCESS_TERMINATE, false, pid);
      GetExitCodeProcess(phandle,pendcode);
      TerminateProcess(phandle,pendcode);
    end;
      

  3.   

    补充一句,楼上用的CreateToolHelp32Snapshot等API仅在WIN9X、2000、XP等系统中才有,而在NT4.0中是没有的,在NT4.0中要枚举进程,可用EnumProcess()或读取注册表
      

  4.   

    应该通过PSAPI.DLL来获得进程ID