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

Вниз

Новый вопрос на старую тему - список всех задач   Найти похожие ветки 

 
M O'Hare ©   (2001-12-13 11:24) [0]

Хочу вывести список всех задач в NT. Для Win98 код примерно таков:

procedure TForm1.Button1Click(Sender: TObject);
var Wnd : hWnd;
buff: array [0..127] of char;
begin
Wnd := GetWindow(Handle, gw_HWndFirst);
while Wnd <> 0 do begin {Не показываем:}
if (Wnd <> Application.Handle) and
(GetWindow(Wnd, gw_Owner) = 0) and
(GetWindowText(Wnd, buff, sizeof(buff)) <> 0)
then begin
ListBox2.Items.Add(StrPas(buff));
GetWindowModuleFileName(Wnd, buff, sizeof(buff));
ListBox1.Items.Add(ExtractFileName(StrPas(buff)));
end;
Wnd := GetWindow(Wnd, gw_hWndNext);
end;
end;

Так вот этот код не работает в NT. Вернее работает, но криво: для windows commander"a пишет имя ехешника "project1.exe", ака для многих других запущенных прог.
Во многих статьях есть фразы "эта функция не пашет в NT", но ни слова о том, чем ее можно заменить.


 
Fellomena   (2001-12-17 10:54) [1]

Во-первых: что значит всех задач ? Всех окон ? Всех процессов ? Всех загруженных модулей ? thread-ов, fiber-ов....
Как я поняла из кода - речь идёт о окнах...
(потому как что бы получить список всего загруженного в Win9x необходимо использовать ф-ию Create32ToolHelp32SnapShot,
которая создаёт "слепок"/dump системы, а далее Process32First, Process32Next, Module32First.....; )
Для NT используется NTQuerySystemInformation...
Как дальше - разберёшься ?



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

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

Наверх




Память: 0.46 MB
Время: 0.013 c
1-42790
Ura
2002-01-31 17:47
2002.02.14
Потоки


1-42749
xmapa
2002-01-30 13:13
2002.02.14
User Functions в Quick Report


1-42779
Зинец Виктор
2002-01-30 16:32
2002.02.14
Моя прога мешает перезагрузке/перелогину Виндовс :-(


1-42757
Dima Kopachev
2002-01-31 11:30
2002.02.14
Вывод числа в editbox


1-42764
VCL
2002-01-26 20:10
2002.02.14
Connect с WORD!!