Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

NtQuerySystemInformation [D7]


Страницы:   1 2

Игорь ©   (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 не устроила ?
Тот же результат достижим , и ощутимо проще ..


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо