如何通过已知的进程句柄来获得相应的应用程序窗口句柄?sos!!!(100分)

  • 主题发起人 主题发起人 Titor
  • 开始时间 开始时间
用下边的句子就可以了
processhandl:=OpenProcess(PROCESS_ALL_ACCESS or PROCESS_TERMINATE,FALSE,dword(ProcessID));
其中processid是一个进程的ID,
processhandl就是你想要的句柄了
 
好像您的得到的不是吧,因为我也在试,所以……,
能问一下吗?
怎么用已经窗口句柄或进程ID(PID)来得到进程句柄(hProcess)
Thanks.
 
那是可以的,下次给你带来完整的程序,这里也有别人讨论过的,你可以先看一看呀:)
http://delphibbs.com/delphibbs/dispq.asp?lid=464758
 
算了,我就直接写它的概要吧:
定义全局变量:id:array[1..20] of integer//用于存放进程的ID;
var
; ; lppe: TProcessEntry32;
; ; found : boolean;
; ; Hand : THandle;
; ; i:integer;
begin
; ; i:=1;
; ; Hand := CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
; ; lppe.dwSize:=sizeof(lppe);
; ; found := Process32First(Hand,lppe);
; ; while found do begin
; ; ; ; id := lppe.th32ProcessID; //获得第I个ID
; ; ; ; ;i:=i+1;
; ; ; ; found := Process32Next(Hand,lppe);
; ; end;
end;

比如你想关掉第三个进程就可以:
; processhandl:=OpenProcess(PROCESS_ALL_ACCESS or PROCESS_TERMINATE,FALSE,dword(ID[3]));
; CloseHandle(processhandl);
就是这样了.
 
这样得到的是进程的句柄,并不是进程主窗口的句柄。
 
多人接受答案了。
 
后退
顶部