procedure TForm1.Button1Click(Sender: TObject); const n = 512; var IDArr: array[0..n-1] of DWORD; size,i: DWORD; buf: array[0..MAX_PATH] of Char; pHandle: THandle; begin // FillChar(buf, n, #0); {这样可避免乱码} EnumProcesses(@IDArr, n, size); for i := 0 to size div SizeOf(DWORD) - 1 do begin pHandle := OpenProcess(PROCESS_ALL_ACCESS, False, IDArr[i]); GetModuleFileNameEx(pHandle, 0, buf, Length(buf)*SizeOf(buf[0])); CloseHandle(pHandle); Memo1.Lines.Add(buf); end; end;