如何通过子窗口的句柄得到它的进程的程序名?(57分)

  • 主题发起人 主题发起人 doll_paul
  • 开始时间 开始时间
D

doll_paul

Unregistered / Unconfirmed
GUEST, unregistred user!
如何通过子窗口的句柄得到它的进程的程序名或应用程序的具体路径!
 
你需要在win9x/nt/2000的哪个系统运行?这个比较关键,先说说。
 
你可以选 9x/2000,也可以选择nt/2000,如果全要,那么需要2个途径才能得到程序名
但是你只有57分,所以你选择一个组合吧:)
 
Pipi.你为什么这么喜欢要分?
 
不要分不是白干了
那我还不如睡大觉呢:)
 
有了分数起码还可以满足一点虚荣心嘛
 
好,好,只要有完美的解决方案,分没问题!!!如何????
 
GetWindowThreadProcessId 可以得到一个窗口的所属的process id
win9x/2000可以用toolhelp api得到相应的程序名字
nt/2000可以用psapi得到相应的程序名字
 
Pipi兄,可否提供一下代码??可外加百分~如何?

em:doll-paul@263.net
 
首先,需要引用2个单元psapi,tlhelp32:

uses psapi,tlhelp32;

var
; pid:DWORD;
begin
GetWindowThreadProcessId( 你找到的HWND , @pid); //pid就是得到窗口的process id
ShowMessage(get_proc_name(pid)); ;//get_prc_name的代码在下面
end;

//get_proc_name是个各个系统通用的函数,传入pid是进程id,返回进程名字
//get_proc_name分别根据是nt/2000 还是 win9x 调用不用的函数得到进程名字
//get_proc_name_nt和get_proc_name_win9x的代码在后面
function get_proc_name(pid:DWORD):string;
begin
if Win32Platform=VER_PLATFORM_WIN32_NT then
; Result:=get_proc_name_nt(pid)
;else
; Result:=get_proc_name_9x(pid);
end;

// nt/2000版本的函数:
function get_proc_name_nt(pid:DWORD):string;
var
; hp,hmod,need:DWORD;
; name:array[0..MAX_PATH]of char;
begin
hp:=OpenProcess(PROCESS_VM_READ ; ;or PROCESS_QUERY_INFORMATION,false,pid);
if hp=0 then
; RaiseLastWin32Error();
EnumProcessModules(hp,@hmod,4,need);
GetModuleFileNameEx(hp,hmod,name,MAX_PATH);
CloseHandle(hp);
Result:=name;
end;

//win9x版本的函数:
function get_proc_name_9x(pid:DWORD):string;
var
; snapshot:DWORD;
; pe:TProcessEntry32;
begin
snapshot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if integer(snapshot)=-1 then
; RaiseLastWin32Error();
Result:='未知';
pe.dwSize:=sizeof(pe);
if Process32First(snapshot,pe) then
; repeat
; if pe.th32ProcessID=pid then
; ; begin
; ; Result:=pe.szExeFile;
; ; break;
; ; end;
; until not Process32Next(snapshot,pe);
CloseHandle(snapshot);
end;

补充,上面的函数为了说明的方便,我把它们的顺序反过来列了
你拷贝到delphi的时候,从上到下的顺序是:
1、get_proc_name_nt
2、get_proc_name_9x
3、get_proc_name
4、调用get_proc_name的代码

好,你把增加的100分的地址写出来吧,我去拿:)
 
另百分在:http://www.delphibbs.com/delphibbs/dispq.asp?lid=933621
 

Similar threads

S
回复
0
查看
911
SUNSTONE的Delphi笔记
S
S
回复
0
查看
832
SUNSTONE的Delphi笔记
S
S
回复
0
查看
888
SUNSTONE的Delphi笔记
S
后退
顶部