HI !! ALL
能否通过一个可执行文件的完整路径...来判断...........该程序是否为启动状态................ 比如: d:\qq\qq.exe 能否通过这个可执文件的路径来判断..是否启动状态.............. 主要是要根据了这个 路径 哦, 并不是查找一下进程..看看有没有就可以了..............
只知道现在有一个可以从进程.获取...可执行文件的 完整路径....一个 函数................
不过同名进程获取路径不是很好.....Thanks
能否通过一个可执行文件的完整路径...来判断...........该程序是否为启动状态................ 比如: d:\qq\qq.exe 能否通过这个可执文件的路径来判断..是否启动状态.............. 主要是要根据了这个 路径 哦, 并不是查找一下进程..看看有没有就可以了..............
只知道现在有一个可以从进程.获取...可执行文件的 完整路径....一个 函数................
不过同名进程获取路径不是很好.....Thanks
解决方案 »
- delphi中,一个程序的登录窗口和闪现窗口和主窗口在project中怎样写?
- 我用的FastReport2.45,为什么用SUM 函数不出数值?
- Form的调用问题
- 广州的朋友:谁能介绍下哪儿有网吧?
- 我在ADOQ中生成了一个数据集,如何把这个数据集保存成VFP格式的DBF文件?
- 迷茫的我!!
- 绝对有反响的问题,斑竹手下留情
- 诚聘程序员
- 高人指点一下,急呀!!!
- mmboy(雨过天晴)请进来拿分!--->“急,关于报表的,无论高手低手都一律请入,分数陆续会加到600分!分数必分,决不食言!(VB转Delphi者求助!)”(little_hero)
- 怎样知道windows "正要" 打开 .WAV 文件
- 关于硬盘频繁访问
GetModuleFileNameEx
可以从进程.获取...可执行文件的 完整路径
比如: d:\qq\qq.exe
对每个进程用OpenProcess、GetModuleFileName得到进程的文件名
剩下就是你自己去比较文件名了老有人问这问题,自己去搜搜代码,多的是
如果是。同名进程的时候。就会判断出多个路径。同名进程是可以解决。但是太麻烦了现在就是想解决简单一些的。。
就是如何定义一个EXE的路径后。。取得进程。。如果是其它同名的进程就全部杀掉。。
问题怪了一些。没事。只是拿出讨论一下。要是解决不了。。的话就算了。。因为我自己想了一晚。有新的判断方法了。
KILLFILE(UEXEPATH);
END;思路就这样了 如果在XP等系统下,需要转化路径的... 是什么来着的,我LOOK LOOK贴上来给你参考一下 while found do
begin
itm:=lvw_prc.Items.Add;
prchand := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_vm_read,
true, lppe.th32ProcessID); //查询方式打开进程
modhand := lppe.th32ModuleID;
if GetModuleFilenameex(prchand, modhand, modName, sizeof(modName)) > 0 then ;
//他妈的,偶偏要用PROCESS32FIRST,还非要你用长文件名
itm.Caption := modName;
if length(Trim(modName))<4 then
begin
itm.Caption := lppe.szExeFile;
end;LOOK
Module32First
uses ....., Tlhelp32;..........function KillTask(ExeFileName:string):boolean;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOLean;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Result := False;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE,
BOOL(0), FProcessEntry32.th32ProcessID), 0)) = 0;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
你改一点点就可以了直接用拉..