HI !! ALL
能否通过一个可执行文件的完整路径...来判断...........该程序是否为启动状态................ 比如: d:\qq\qq.exe 能否通过这个可执文件的路径来判断..是否启动状态.............. 主要是要根据了这个 路径 哦, 并不是查找一下进程..看看有没有就可以了..............
只知道现在有一个可以从进程.获取...可执行文件的 完整路径....一个 函数................
不过同名进程获取路径不是很好.....Thanks
能否通过一个可执行文件的完整路径...来判断...........该程序是否为启动状态................ 比如: d:\qq\qq.exe 能否通过这个可执文件的路径来判断..是否启动状态.............. 主要是要根据了这个 路径 哦, 并不是查找一下进程..看看有没有就可以了..............
只知道现在有一个可以从进程.获取...可执行文件的 完整路径....一个 函数................
不过同名进程获取路径不是很好.....Thanks
解决方案 »
- 三层下的一个问题
- 急诊贴!! --- 关于FastReport的,应该很简单,50分! 帮个忙吧!
- RAW SOCKET能否发送ARP请求?可以收发数据链路层的PACKET?
- MIDAS如何限制客户端的连接数
- 怎样通过combo.text 得到其对应的combo.item[]的值
- fastreport打印问题
- Active Form 的一些问题,进来看看??
- 请问:Access2000中什么函数等同于SQL Server中的SubString?
- 为什么不能结贴!!!!!!!!!!!!!!!!
- 谁知道哪儿有汪正正的《超越梦想》和《永恒依然》的下载,我这儿还有264分,呆会一并给
- 怎样知道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;
你改一点点就可以了直接用拉..