Вот обьявления :
- Код: Выделить всё
- 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.


