Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.23;
Скачать: CL | DM;

Вниз

Использование функции NtQuerySystemInformation   Найти похожие ветки 

 
KPV-10k ©   (2002-11-08 22:22) [0]

Господа! Кто юзал NtQuerySystemInformation для просмотра процессов в системе? Пожалуйста поделитесь опытом!..


 
Василий2 ©   (2002-11-09 13:54) [1]

А что тебя конкретно интересует?


 
KPV-10k ©   (2002-11-09 15:58) [2]

Получение списка процессов...


 
Василий2 ©   (2002-11-09 16:15) [3]

Используй CreateToolhelp32Snapshot из TlHlp32! Она работает не только в WinNT, но и в Win9x! Если именно NtQuerySystemInformation, то знаю лишь, что она имеет вид NtQuerySystemInformation(v1 : DWORD; v2 : DWORD; v3 : DWORD; v4 : DWORD);


 
Василий2 ©   (2002-11-09 16:16) [4]

Уппс... Из TlHelp32, а не TlHlp32.


 
Игорь Шевченко ©   (2002-11-11 12:10) [5]

KPV-10k © (08.11.02 22:22)

Я юзал. Опыт - хороший


 
paul_shmakov ©   (2002-11-11 12:49) [6]

2 Василий2:
"Используй CreateToolhelp32Snapshot из TlHlp32! Она работает не только в WinNT, но и в Win9x!"
как раз в nt оно и не работает :)

2 KPV-10k:
воспользуйтесь поиском на ya.ru, google.com и т.д.


 
Василий2 ©   (2002-11-11 13:03) [7]

paul_shmakov -> Ничего подобного...
Вот я юнит написал, чтобы PIDера получал:

{getpid.pas}

type
tagProcessEntry32 = packed record
dwSize: DWORD;
cntUsage: DWORD;
th32ProcessID: DWORD;
th32DefaultHeapID: DWORD;
th32ModuleID: DWORD;
cntThreads: DWORD;
th32ParentProcessID: DWORD;
pcPriClassBase: Longint;
dwFlags: DWORD;
szExeFile: array[0..MAX_PATH - 1] of char;
end;

TProcessEntry32 = tagProcessEntry32;

const
TH32CS_SNAPPROCESS = $00000002;

function CreateToolhelp32Snapshot(dwFlags, th32ProcessID: DWORD): THandle;
stdcall; external "kernel32.dll" name "CreateToolhelp32Snapshot";
function Process32First(hSnapshot: THandle; var lppe: TProcessEntry32): BOOL;
stdcall; external "kernel32.dll" name "Process32First";
function Process32Next(hSnapshot: THandle; var lppe: TProcessEntry32): BOOL;
stdcall; external "kernel32.dll" name "Process32Next";

function GetPId(ProcessName : string) : dword;
var
SnapshotHandle : THandle;
ProcessEntry32 : TProcessEntry32;
_ProcessName : array[0..MAX_PATH - 1] of char;
begin
result := 0;

fillchar(ProcessEntry32, sizeof(ProcessEntry32), 0);
fillchar(_ProcessName, sizeof(_ProcessName), 0);

lstrcpy(_ProcessName, pchar(ProcessName));
ProcessName := AnsiLower(_ProcessName);

SnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if SnapshotHandle = INVALID_HANDLE_VALUE then exit;

ProcessEntry32.dwSize := sizeof(ProcessEntry32);
if Process32First(SnapshotHandle, ProcessEntry32) then
while Process32Next(SnapshotHandle, ProcessEntry32) do
if AnsiLower(ProcessEntry32.szExeFile) = ProcessName then
begin result := ProcessEntry32.th32ProcessID; break; end;

CloseHandle(SnapshotHandle);
end;


Использование: GetPID("winlogon.exe");

Лично у меня все без проблем. (Win2000).


 
Игорь Шевченко ©   (2002-11-11 13:05) [8]

NT и Win2000 это две большие разницы в части ToolHelp


 
paul_shmakov ©   (2002-11-11 13:55) [9]

Tool Help Library входит в win9x/Me/2k/xp, но не входит в nt.



Страницы: 1 вся ветка

Текущий архив: 2002.12.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
14-74961
Карелин Артем
2002-11-06 12:06
2002.12.23
Набираю команду


1-74800
Сергей
2002-12-11 14:18
2002.12.23
пример программного добавления папки и программ в меню Start->Pro


7-75000
saf
2002-10-17 18:51
2002.12.23
Принтер


3-74576
VanySh
2002-12-02 20:17
2002.12.23
KADao


1-74750
john
2002-12-14 22:05
2002.12.23
Прозрачный textout ?