delphi判断某个程序是否已经启动  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi判断某个程序是否已经启动


delphi判断某个程序是否已经启动

// 判断指定路径的Exe执行程序是否已经启动
// aExeName : 带全路径
function IsAppExeRun(const aExeName: string):Boolean;
var
_vHandle : THandle;
_vProEntry : TProcessEntry32;
_vIsFound : Boolean;
_vProHandle : THandle;
_vHmodule : HMODULE;
_vFileNameBuf : array[0..MAX_PATH] of Char;
_vNeeded : DWORD;
_vTempStr : string;
begin
Result := False;
_vHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
try
_vProEntry.dwSize := SizeOf(TProcessEntry32);
_vIsFound := Process32First(_vHandle, _vProEntry);
while _vIsFound do
begin
_vTempStr := _vProEntry.szExeFile;
if (UpperCase(_vTempStr) = UpperCase(ExtractFileName(aExeName))) or
(UpperCase(_vTempStr) = UpperCase(aExeName)) then
begin
_vProHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
False, _vProEntry.th32ProcessID);
GetLastError;
if _vProHandle <> 0 then
begin
if EnumProcessModules(_vProHandle, @_vHmodule, SizeOf(_vHmodule), _vNeeded) then
begin
ZeroMemory(@_vFileNameBuf, MAX_PATH + 1);
GetModuleFileNameEx(_vProHandle, _vHmodule, _vFileNameBuf, MAX_PATH + 1);
_vTempStr := _vFileNameBuf;
if UpperCase(_vTempStr) = UpperCase(aExeName) then
begin
Result := True;
Break;
end;
end;
end;
end;
_vIsFound := Process32Next(_vHandle, _vProEntry);
end;
finally
CloseHandle(_vHandle);
end;
end;



推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.037039041519165 seconds