данный пример, показывает список процессов. процесс отображается двумя типами путей. native - путь отображается как: Device\HarddiskVolume1\program files\test.exe. windows - обычный путь: c:\program files\test.exe.
Код
#include "windows.bi"
#include "win/psapi.bi"
#include "crt.bi"
#define PROCESS_NAME_NATIVE &h00000001
' объявим ansi вариант функции QueryFullProcessImageName. для уникода - в алиас, заместо последней A, надо поставить W
declare function QueryFullProcessImageName alias "QueryFullProcessImageNameA"(byval hProcess as HANDLE, byval dwFlags as DWORD, byval lpExeName as LPTSTR, byval lpdwSize as PDWORD) as DWORD
dim as zstring * 512 pname
dim as DWORD nPids=0, dwSize, pids(1024-1)
EnumProcesses(@pids(0), 1024*sizeof(DWORD) ,@nPids)
nPids/=sizeof(DWORD)
for i as integer =0 to nPids-1
dim as HANDLE h = OpenProcess(READ_CONTROL or PROCESS_QUERY_INFORMATION,0,pids(i))
if (h = 0) then continue for
dwSize = 512
if (QueryFullProcessImageName(h,PROCESS_NAME_NATIVE,@pname,@dwSize) = 0) then continue for
print pname
dwSize = 512
if (QueryFullProcessImageName(h,0,@pname,@dwSize) = 0) then continue for
print pname
closeHandle(h)
if i mod 20 = 0 then sleep
next
sleep