Форум: "WinAPI";
Текущий архив: 2002.04.18;
Скачать: [xml.tar.bz2];
ВнизCeateToolHelp32SnapShot на NT работает? Найти похожие ветки
← →
skywalker (2002-02-14 18:59) [7]Вот я сочинил какую функцию, но вне есть проблема, передавать
данные динамического массива вот таким пойнетром (@PIDs или @ModHndls) некоректо, может знает кто, как правильно это сделать?
function CheckOutExeNT(Exename:string):boolean;
type
TEnumProcesses=function(lpidProcess:LPDWORD; cb:DWORD; var cbNeeded:DWORD):BOOL stdcall;
TEnumProcessModules=function(hProcess:THandle; lphModule:LPDWORD; cb:DWORD; var lpcbNeeded:DWORD):BOOL;
TGetModuleFileNameExA=function(hProcess:THandle; hModule:HMODULE;lpFilename:PAnsiChar; nSize:DWORD):DWORD stdcall;
var
EnumProcesses:TEnumProcesses;
EnumProcessModules:TEnumProcessModules;
GetModuleFileNameExA:TGetModuleFileNameExA;
hPSAPI:THandle;
PIDs:array of dword;
pbNeeded:dword;
ProcHandle:THandle;
ModHndls:array of THandle;
mbNeeded:dword;
Counter,Counter1:longword;
ModuleName:string;
begin
Result:=false;
hPSAPI:=LoadLibrary("PSAPI.dll");
if hPSAPI<32 then
begin
Result:=false;
Exit
end;
EnumProcesses:=GetProcAddress(hPSAPI, "EnumProcesses");
EnumProcessModules:=GetProcAddress(hPSAPI, "EnumProcessModules");
GetModuleFileNameExA:=GetProcAddress(hPSAPI, "GetModuleFileNameExA");
pbNeeded:=1004;
repeat
SetLength(PIDs,(pbNeeded div 4)+10)
until EnumProcesses(PIDs,Length(PIDs),pbNeeded)<>false;
for Counter:=0 to (pbNeeded div 4)-1 do
begin
ProcHandle:=OpenProcess(PROCESS_VM_READ,false,PIDs[Counter]);
mbNeeded:=1004;
repeat
SetLength(ModHndls,(mbNeeded div 4)+10)
until EnumProcessModules(ProcHandle,@ModHndls,Length(ModHndls),mbNeeded)<>false;
for Counter1:=0 to (mbNeeded div 4)-1 do
begin
SetLength(ModuleName,MAX_PATH);
GetModuleFileNameExA(ProcHandle,ModHndls[Counter],pchar(ModuleName),MAX_PATH);
if UpperCase(ExtractFileName(string(ModuleName)))=UpperCase(Exename) then
begin
Result:=true;
break
end
end;
CloseHandle(ProcHandle);
if Result then break
end
end;
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.04.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c