Вопросы и Ответы
48. Как определить какие приложения уже запущены?
Для получения списка запущенных приложений необходимо, с помощью функции:
function GetWindow(Wnd: HWnd; Cmd: Word): HWnd;
передав первым параметром ссылку на окно своего приложения, а вторым - константу GW_HWNDFIRST, получить ссылку на первое окно в списке окон. И затем, с помощью этой же функции, но передавая уже ссылку на найденное окно и константу GW_HWNDNEXT получить следующую ссылку и так, до тех пор, пока функция не вернет значение равное нулю.
В процессе получения ссылок следует
проверять: ............ procedure
TForm1.Button1Click(Sender: TObject); Wnd : hWnd; begin ListBox1.Clear; IF (Wnd <> Application.Handle) AND {-Собственное
окно} IsWindowVisible(Wnd) AND {-Невидимые окна} THEN BEGIN GetWindowText(Wnd, buff, sizeof(buff)); END; END; end; ............
VAR
buff: ARRAY [0..127] OF Char;
Wnd := GetWindow(Handle, gw_HWndFirst);
WHILE Wnd <> 0 DO BEGIN {Не показываем:}
(GetWindow(Wnd, gw_Owner) = 0) AND {-Дочернии окна}
(GetWindowText(Wnd, buff, sizeof(buff)) <> 0) {-Окна без
заголовков}
ListBox1.Items.Add(StrPas(buff));
Wnd := GetWindow(Wnd, gw_hWndNext);
ListBox1.ItemIndex := 0;
...предыдущая страница следующая...
оглавление