中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Delphi > 综合文章
根据进程processid得到该进程的可执行文件名
作者:未知 时间:2005-08-07 20:57 出处:编程爱好者网站 责编:chinaitpower
              摘要:根据进程processid得到该进程的可执行文件名

M 作 者: z_h_q_2000(★龙飞虎★) 2001-06-01 20:06:01 :0 :0    
[回复] [打包] [转贴]  
uses tlhelp32;
procedure TForm1.Button1Click(Sender: TObject);
var
  pe:PROCESSENTRY32;
  me:MODULEENTRY32;
  hp,hm:Thandle;
  b,b1:boolean;
begin
  hp:=CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0);
  pe.dwSize:=SizeOf(pe);
  b:=Process32First(hp,pe);
  while  b do
  begin
    hm:=CreateToolHelp32SnapShot(TH32CS_SNAPModule,pe.th32ProcessID);
    me.dwSize:=sizeof(ModuleEntry32);
    if Module32First(hm,me) then
    begin
    b1:=Module32First(hm,me);
    while  b1 do
    begin
      if me.th32ModuleID=pe.th32ModuleID then
        listbox1.Items.Add(me.szExePath);
      b1:=Module32Next(hm,me);
    end;
  end;
    b:=Process32Next(hp,pe);
  end;

end;

而在NT系统中由于不支持toolhelp api,故
#include "psapi.hpp"

假使process id是 pid 的话:

HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,pid);
if( NULL != hProcess )
  {
  HMODULE hMod;
  DWORD cbNeeded;
  if( EnumProcessModules( hProcess, &hMod, sizeof( hMod ), &cbNeeded ) )
    {
    char buf[MAX_PATH+1]="";
    if(GetModuleBaseName( hProcess, hMod,buf,sizeof buf)>0)
      //  
      // buf放的就是名字
      //
    }
  CloseHandle(hProcess);
  }
(注意该程序运行需要psapi.dll,所以要copy到别的机器上运行时需连同该文件一起拷贝。当然如果装了delphi或者c++ builder就不需要了)

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有