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

Вниз

Как найти названия всех запущенных прог (как по Ctrl+Alt+Del)   Найти похожие ветки 

 
Mike_Z   (2002-11-14 22:21) [0]

Subg. В свежей рассыле от 13.11.02 был приведен такой код:

procedure TForm1.Button1Click(Sender: TObject);
VAR
Wnd : hWnd;
buff: ARRAY [0..127] OF Char;
begin
ListBox1.Clear;
Wnd := GetWindow(Handle, gw_HWndFirst);
WHILE Wnd <> 0 DO BEGIN {Не показываем:}
IF (Wnd <> Application.Handle) AND {-Собственное окно}
IsWindowVisible(Wnd) AND {-Невидимые окна}
(GetWindow(Wnd, gw_Owner) = 0) AND {-Дочернии окна}
(GetWindowText(Wnd, buff, sizeof(buff)) <> 0) {-Окна без заголовков}
THEN BEGIN
GetWindowText(Wnd, buff, sizeof(buff));
ListBox1.Items.Add(StrPas(buff));
END;
Wnd := GetWindow(Wnd, gw_hWndNext);
END;
ListBox1.ItemIndex := 0;
end;


Этот код показывает заголовки окон программ, которые сейчас выполняются. Но только те, которые я сам запустил. Однако, по трем любимым клавишам показываются и те программы, иконки которых есть в трее.
Вопрос №1: как выцепить и их тоже?
Вопрос №2: как ко всем этим заголовкам привязать exe"шники, которым они соответствуют? Exe"шники тоже нужны


 
Александр Павлов ©   (2002-11-15 05:39) [1]

Заполняет листбокс1 списком всех процессов:

uses TLHELP32;
....

procedure TForm1.Button1Click(Sender: TObject);
var
ProcessEntry: TProcessEntry32;
SnapShot: Thandle;
begin
ListBox1.Items.BeginUpdate;
ListBox1.Items.Clear;
ListBox1.Items.EndUpdate;
if SnapShot > 0 then CloseHandle(SnapShot);
SnapShot := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
ProcessEntry.dwSize := SizeOf(ProcessEntry);
if Process32First(SnapShot, ProcessEntry) then
repeat
ListBox1.Items.Add(ProcessEntry.szExeFile);
until not Process32Next(SnapShot, ProcessEntry);
end;


 
Александр Павлов ©   (2002-11-15 05:41) [2]

Работает только под 9x. Под NT/XP - смотри PSAPI.DLL.


 
Mike_Z   (2002-11-15 16:39) [3]

>Александр Павлов: Не то.
Видимо вопрос задал непонятно. Нажмите у себя Ctrl+Alt+Del и посмотрите, что Вам это покажет. Список exe"шников я могу получить; список окон - тоже (это вышеприведенные 2 кода). Вопрос - как их вместе связать. Т.е. чтобы рядом выдавало, например, "Delphi 5 - Project 1" (название) и "C:\Delphi 5\Bin\Delphi32.exe" (имя запущеного файла)?


 
Игорь Шевченко ©   (2002-11-15 16:52) [4]

EnumFunctions из кладовки (раздел "Готовые программы")


 
Mike_Z   (2002-11-16 00:43) [5]

??? ??? ??????, ?? ??? ?????? ?????? ??? (???? ?????????? ??? ??? ???????????). ? ??? ????? (? ???????) ?????? ????????


 
Mike_Z   (2002-11-16 00:52) [6]

Pardon.
Программы хорошая (и модуль к ней тоже). Но она реализует код №1, а надо связать код №1 + код №2, чтобы и окно, и имя файла были выведены одновременно и соответствовали друг другу.



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

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

Наверх




Память: 0.48 MB
Время: 0.01 c
1-1829
Xai
2002-12-14 11:50
2003.01.02
Сохранение данных


3-1752
EternalWonderer
2002-12-10 17:26
2003.01.02
CONNECT BY PRIOR ID = PARENT


14-1889
----
2002-12-13 13:50
2003.01.02
Из исходника диаграмка (чем и возможно ли)????


14-1887
SemFLY
2002-12-13 01:06
2003.01.02
Помогите найти пример работы с TIdIRCServer (INDY)...


14-1867
saxon
2002-12-12 17:48
2003.01.02
Телефончик не нужен ?