如何得到正在运行的程序的名称及路径?(50分)

  • 主题发起人 主题发起人 barry1999
  • 开始时间 开始时间
B

barry1999

Unregistered / Unconfirmed
GUEST, unregistred user!
hFocus:=GetActiveWindow;
GetWindowText(hFocus,szTitle,256);//不能得到应用程序的名称及路径
GetWindowModuleFileName(hFocus,szTitle,256);//得到的是模快的名称及路径,
请各位朋友出手相助!
 
程序名:application.title
路径:application.ExeName
 
是你自己的程序吗?如果是,则:application.exename,ExtractFileDir(application.exename)
 
Application.Exename 中包含应用程序的路径和名称
用Sysutils单元中的函数function ExtractFilePath(const FileName: string): string;获得路径,再
再用Sysutils单元中的function ExtractFileName(const FileName: string): string;获取名称,
如下:
AppPath:String;
AppName:String;
......
AppPath:=ExtractFilePath(Application.Exename );
AppName:=ExtractFileName(Application.Exename );
 
我用的是WH_JOURALHOOK挂钩,在回调函数里监控目前的活动窗口的名称及路径,
例如当前我在上网,那么就应该返回'c:/program files/internet/inernet.exe'
ok?
 
判断当前活动窗口是否为IE:
GetClassName(GetActiveWindow(),buffer,255);

if buffer='IEFrame' then

MessageBox(Handle,'当前窗口为IE!','提示信息',MB_OK)

else

MessageBox(Handle,'当前窗口不是IE窗口','提示信息',MB_OK);
 
但是我想得到的是应用程序名以便监控。
 
高手出招!![:(][:(]
 
高手出招!![:D][:D]
 
这样可以得到程序的路径
var PathName, S: string;
//program
PathName := Application.ExeName;
N := Length(PathName);
For I := N downto 1 do
begin
S := copy(PathName, i, 1);
if (s = '/') then
begin
PathName := copy(Pathname, 1, i-1);
break;
end;
end;
 
a_ping兄误会了!我想得到不是自己的应用程序名!

而是目前系统中的活动的应用程序名!

例如:如果系统中有应用程序启动了,那我就可以自动的把他记录下来以便以后监控!
 
简单的说也就是监控用户的软件使用情况

就象护花使者里的“查看用户软件使用情况”

目前我用GetWindowModuleFileName(hFocus,szTitle,256)函数

得到的是模快的名称及路径,想我启动qq时得到是MSHTML.DLL!
 
大侠出手啊![:(]
 
其实在本论坛中已有现成的贴子了! 
我在不久前就回答过类似的问题:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=654446
 
当然,如果你要在NT下实现,就必须用PSAPI来重写一下
你看看Delphi的PsApi.pas单元,全部都封装好了。
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部