Форум: "WinAPI";
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];
ВнизНовый вопрос на старую тему - список всех задач Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.004 c