Новые книги

IoT – инструмент, который поможет бизнесу вырваться вперед. Мачей Кранц рассказывает об инновационной технологии и особенностях внедрения ее в разные отрасли. Эта книга научит вас использовать IoT, предсказывать грядущие перемены и разрабатывать уникальные стратегии, способные обеспечить вашему бизнесу и карьере процветание.
Из вашего компьютера валит сизый дым? Windows не грузится, и вы видите лишь черный экран? Или же Windows загружается, но потом экран становится синим и по нему бегут «кракозяблы»? Из системного блока раздается пронзительный писк? Не паникуйте! И не спешите вызывать мастера. В большинстве случаев сбои компьютера можно «излечить» самостоятельно. Как - научит эта книга. В ней предельно просто, в расчете на полных «чайников», рассказывается о наиболее часто встречающихся поломках ПК. Рассматриваются как аппаратные сбои, так и сбои на уровне операционной системы и программного обеспечения. Отдельно обсуждаются вирусы и вредоносные программы.

Вопрос и Ответ 48

Вопросы и Ответы


      48. Как определить какие приложения уже запущены?

      Для получения списка запущенных приложений необходимо, с помощью функции:

      function GetWindow(Wnd: HWnd; Cmd: Word): HWnd;

      передав первым параметром ссылку на окно своего приложения, а вторым - константу GW_HWNDFIRST, получить ссылку на первое окно в списке окон. И затем, с помощью этой же функции, но передавая уже ссылку на найденное окно и константу GW_HWNDNEXT получить следующую ссылку и так, до тех пор, пока функция не вернет значение равное нулю.

      В процессе получения ссылок следует проверять:

      • имеет ли окно заголовок;
      • видимо ли окно;
      • не дочернее ли окно (если необходимо).

      Пример:

      ............

      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;

      ............


...предыдущая страница следующая...
оглавление





"Вопрос и Ответ 48"
Copyright © "В помощь Веб-Мастеру" (Alexander D. Belyaev) 2005-2024 .
При перепечатке любого материала видимая ссылка на источник "В помощь Веб-Мастеру" и все имена, ссылки авторов обязательны!
Время генерации страницы: 0.006