请问如何从进程ID得到进程的名字了?

解决方案 »

  1.   

    穷举进程列表
    PID=某个值就能获得ImageName了超容易的问题http://lysoft.7u7.net
      

  2.   

    应该是有API的,直接把pid做为参数获得的啊
      

  3.   

    据我所知没有这样的API的去MSDN看都没发现http://lysoft.7u7.net
      

  4.   

    //参考如下代码~~
    uses PSAPI;var
      vProcess: THandle;
      vBuffer: array[0..255] of Char;
    begin
      vProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
         False, GetCurrentProcessId);
      try
        GetModuleBaseName(vProcess, 0, vBuffer, SizeOf(vBuffer));
        Caption := vBuffer;
      finally
        CloseHandle(vProcess);
      end;
    end;
      

  5.   

    楼上的方法OK但只能适用于2000或以上系统
    WIN9x没PSAPI的
    而NT4需要另外下载PSAPI库http://lysoft.7u7.net
      

  6.   

    uses TlHelp32;var
      vSnapshot: THandle;
      vProcessEntry32: TProcessEntry32;
    begin
      vSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
      vProcessEntry32.dwSize := SizeOf(TProcessEntry32);
      if Process32First(vSnapshot, vProcessEntry32) then
        repeat
          if vProcessEntry32.th32ProcessID = GetCurrentProcessId then
          begin
            Caption := vProcessEntry32.szExeFile;
            Break;
          end;
        until not Process32Next(vSnapshot, vProcessEntry32);
      CloseHandle(vSnapshot);
    end;
      

  7.   

    同意楼上的,用vProcessEntry32.th32ProcessID和vProcessEntry32.szExeFile就可以,还有,你要的代码已经发给你了,不过还有问题,你可以将就看着