消息钩子问题(100分)

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

dodoxiao

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么让我的程序运行后,在有别的程序运行,我就知道(也就是消息钩子的写法)!
请详细说明,小弟谢过了。
 
这个你可以用tlhelp32单元中的process32first和process32next两个函数就可以啦/
在启动你的程序后,你通过上述两个函数取得当前的进程列表,然后监控系统进程/
这样你就可以知道是否有新的进程开始运行或控制其他相应的进程/
 
如果要监控的程序也是你的程序,可以发送广播消息先知其它程序。

如果用枚举进程的方法可以以下进行:
procedure TForm1.Button1Click(Sender: TObject);
var
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
Ret : BOOL;
ProcessID : integer;
s:string;
begin
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
Ret:=Process32First(FSnapshotHandle,FProcessEntry32);
Memo1.clear;
while Ret do
begin
Memo1.lines.add(FProcessEntry32.szExeFile);
s:=ExtractFileName(FProcessEntry32.szExeFile);
/// FProcessEntry32.szExeFile 是执行程序文件名(含路径)。s不含路径。
if s='......' then
begin
........
end;
Ret:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
end;
 
jsxjd:
你的对你的回答表示感谢,但没有达到我的效果。
我的问题就是监控其他的程序(进程),如有我要的就执行就通知我知道(也就是要执行我的一部分程序)。
 
我也想知道喔是不是用wh_getmessage钩子呀
 

Similar threads

后退
顶部