Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.006 c
4-42898
M O'Hare
2001-12-13 11:24
2002.02.14
Новый вопрос на старую тему - список всех задач


3-42649
PONTIY
2002-01-19 12:19
2002.02.14
Вставка NULL в поле TTable.


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


4-42892
Shadow77
2001-12-17 15:27
2002.02.14
Как узнать, активно или нет данное окно?


1-42731
Kurt
2002-01-29 23:13
2002.02.14
Связь между приложениями




   Наверх