FreeBasic
Главная
Вход
Регистрация
Среда, 16.10.2024, 07:18Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Ещё один способ получения списка процессов
electrikДата: Суббота, 29.03.2014, 00:35 | Сообщение # 1
Полковник
Группа: Друзья
Сообщений: 182
Репутация: 3
Статус: Offline
данный пример, показывает список процессов. процесс отображается двумя типами путей. 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
 
  • Страница 1 из 1
  • 1
Поиск: