如何根据进程id取得程序名?
解决方案 »
- delphi如何输出FastReport的pdf文档
- 高难题,怎么取得桌面的"QQ.lnk"坐标???
- Access Violation错误,地址定位,LStrLAsg()处中止,怎么查找定位哪一个变量使用时出现上述错误呢?
- 我把組件刪除後,為什麼單元裡還有引用,有什麼方法能刪除組件後,引用也刪除!
- 我要把打开的文件名送到listbox里面去,但是得到的是有路径的,怎么才能只要文件名啊
- 急!,请高手帮忙
- 请问如何在Delphi中使用IADs::PutEx方法?急
- 在sql server中,有没有这样一个函数?
- 企业选择开发商,知道上海世纪奥联科技有限公司的请说说对它的印象.进者有分.
- 为什么我的Delphi6没有'WebServices'这个选项页?
- 简单问题,郁闷~~~~~,各位达人帮帮忙啊
- 郁闷:能否检测ftp网络服务器上的某个文件正在被使用?
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;
--------------------------------------------------------------------------------
toolhelp api 在 nt 上不支持
下面的可以在 nt 上运行
如果要copy到其他机上运行,要顺便拷贝 psapi.dll(这个dll安装delphi或者c++ builder后就有了)#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);
}
--------------------------------------------------------------------------------
找出所有进程的 process id:下面的程序也是可以在 nt 上运行:下面的程序也是需要 psapi.dll#include "psapi.hpp"DWORD pid[1000];
DWORD ret_id=0;
if(!EnumProcesses(pid,sizeof pid,&ret_id))
//返回0,就是失败了成功的话返回 非 0 值ret_id是返回的字节数,注意不是id的个数,
比如返回 1 个id,实际上ret_id等于4,(表示4个字节)
ret_id/4 才是 返回 的id 的个数返回的id放在 数组 pid
大小要大于 id 可能的最大数才找的全,上面的例子是可以找1000个,足够了,
如果嫌大,200个就可以了
GetProcessById
能够获得进程的全部信息,包括ProcessName,MainWindowName,MainWindowHandle等
可以去查一查msn
不过delphi下好像没有解释这个函数