| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Определить имя файла процесса и наоборот???!!! |
| Автор: Nicholas 21.10.2004, 11:07 |
| 1. Вот так получаем список запущенных приложений: 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 {Hе показываем:} IF (Wnd <> Application.Handle) AND {-Собственное окно} IsWindowVisible(Wnd) AND {-Hевидимые окна} (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 – Microsoft Word Windows Commander …….. А надо что бы выводилось так: Документ1 – Microsoft Word | Winword.exe Windows Commander | Wincmd32.exe …………. а лучше так: Документ1 – Microsoft Word | c:\Program files\Microsoft Office\Office10\Winword.exe Windows Commander | c:\WinCmd\Wincmd32.exe …………. Покажите как такое организовать, желательно с помощью Win 32 API ??? 2. Как получить HWnd по имени файла, к примеру у меня calc.exe имя файла и калькулятор запущен, мне надо найти окно созданное этой программой и закрыть его. Только вот привязка должна быть к файлу, т.к. есть некоторые системные приложения у которых имена файлов разные, а classname одинаковые, при этом заголовок окна не известен????? Собственно если на первый вопрос кто ответит, то второй не понадобиться, поставлю просто условие при получении classname проверят имя файла. |
| Автор: p0s0l 21.10.2004, 11:50 | ||||||
1) Этот способ не работает в 9x:
Этот способ должен работать везде:
2) Как убить процесс, зная имя .exe (из DRKB):
|