Вот обьявления :
- Код: Выделить всё
const
ToolHlp = 'Toolhelp.dll';
type
tagPROCESSENTRY32 = record
dwSize: DWORD;
cntUsage: DWORD;
th32ProcessID: DWORD; // this process
th32DefaultHeapID: DWORD;
th32ModuleID: DWORD; // associated exe
cntThreads: DWORD;
th32ParentProcessID: DWORD; // this process's parent process
pcPriClassBase: Longint; // Base priority of process's threads
dwFlags: DWORD;
szExeFile: array[0..MAX_PATH - 1] of WChar;// Path
end;
PROCESSENTRY32 = tagPROCESSENTRY32;
PPROCESSENTRY32 = ^tagPROCESSENTRY32;
LPPROCESSENTRY32 = ^tagPROCESSENTRY32;
TProcessEntry32 = tagPROCESSENTRY32;
function CreateToolhelp32Snapshot(dwFlags, th32ProcessID: DWORD): THandle;external ToolHlp name 'CreateToolhelp32Snapshot';
function Process32First(hSnapshot: THandle; lppe: LPPROCESSENTRY32{var lppe: TPROCESSENTRY32}): BOOL;external ToolHlp name 'Process32First';
Вот вызов:
- Код: Выделить всё
var
SnapShot: THandle;
pe32 :TPROCESSENTRY32;
begin
SnapShot := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
if SnapShot <> 0 then
begin
pe32.dwSize := SizeOf(TPROCESSENTRY32);
if Process32First(SnapShot, @pe32) then
begin
ListBox1.Add('! '+pe32.szExeFile);
end else ListBox1.Add('Ошибка № '+ Int2Str(GetLastError));
end
else ListBox1.Add('Снэпшота нет!!! '+ Int2Str(GetLastError));
CloseHandle(SnapShot);
end;
Получаю ошибку № 87 - Invalid parameter. 4-й час туплю, гуглю, курю msdn - и нифига не понимаю. Работающий в delphi код отличается только тем, что в структуре AnsiChar вместо Widechar.