![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
NtQuerySystemInformation [D7]
Игорь © (2008-10-13 13:49:00)Привет, дайте примерчик попроще для получения списка процессов в Windows 2000 с помощью
NtQuerySystemInformation, нашел пример Игоря Шевченко но для меня сложноват, мне нужен только список процессов с ID
Спасибо
Игорь (2008-10-14 11:01:00) [21]
> Rouse_ © (13.10.08 16:19) [7]
Ну вот применительно к этому коду http://programmersforum.ru/showthread.php?p=85515получаеться вот что
var
SystemInformation, SystemInformationIterator: PSYSTEM_PROCESS_INFORMATION;
ReturnLength: DWORD;
ModuleName: String;
begin
ReturnLength := 0;
if NtQuerySystemInformation(
SystemProcessesAndThreadsInformation,
nil, 0, ReturnLength) <> STATUS_INFO_LENGTH_MISMATCH then Exit;
if ReturnLength > 0 then
begin
GetMem(SystemInformation, ReturnLength);
try
if NtQuerySystemInformation(SystemProcessesAndThreadsInformation,
SystemInformation, ReturnLength, ReturnLength) = 0 then
begin
SystemInformationIterator := SystemInformation;
repeat
if SystemInformationIterator^.ModuleName = nil then
ModuleName := 'System Idle Process'
else
ModuleName := SystemInformationIterator^.ModuleName;
Form1.ListBox1.Items.Add(ModuleName);
SystemInformationIterator :=
Pointer(DWORD(SystemInformationIterator) +
SystemInformationIterator^.NextOffset);
until SystemInformationIterator^.NextOffset = 0;
end;
finally
FreeMem(SystemInformation);
end;
end else
ShowMessage('NO');
Rouse_ (2008-10-13 16:19:00) [22]
> Это код не работает в Windows 2000
Обоснуй...
Сергей М. (2008-10-13 16:07:00) [23]
> Игорь © (13.10.08 16:00) [5]
> С чего ты взял что я
Ну не я же)
Код-то тебене понятен)
> Это код не работает в Windows 2000
>
Что, вот прямо так и говорит "не работаю в Windows 2000" ?
Игорь (2008-10-13 16:00:00) [24]
> Сергей М. © (13.10.08 14:52) [4]
С чего ты взял что я страдалец?
Это код не работает в Windows 2000
Сергей М. (2008-10-13 14:52:00) [25]
> Игорь © (13.10.08 14:42) [3]
Вот тут страдалец типа тебя
http://programmersforum.ru/showthread.php?p=85515
тоже нашел код)
Игорь (2008-10-13 14:42:00) [26]Блин ну причем здесь
CreateToolhelp32Snapshotто, мне нужнаNtQuerySystemInformation
Vlad Oshin (2008-10-13 14:26:00) [27]или еще так
uses tlhelp32;
procedure TForm2.Button2Click(Sender: TObject);
var
hSnapshoot: THandle;
pe32: TProcessEntry32;
begin
hSnapshoot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshoot <> -1) then begin
pe32.dwSize := SizeOf(TProcessEntry32);
if (Process32First(hSnapshoot, pe32)) then
repeat
memo1.Lines.Add(format(' %10d, %5d: %s', [pe32.th32ProcessID, pe32.cntThreads, pe32.szExeFile]));
until not Process32Next(hSnapshoot, pe32);
CloseHandle (hSnapshoot);
end;
end;
Сергей М. (2008-10-13 13:54:00) [28]А чем функциональность PSAPI не устроила ?
Тот же результат достижим , и ощутимо проще ..