Новые книги

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

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

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


      44. Как определить работает ли уже данное приложение или это первая его копия?

      В Delphi 2.0 не поддерживается переменная hPrevInst (см. "Вопрос и Ответ 17") и определение первая это копия приложения или нет становится нетривиальной задачей.

      Наиболее простой путь - перебор всех окон и при совпадении заголовка окна с Application.Title считать, что приложение уже запущено. Единственное, необходимо помнить, что в момент проверки Вы обнаружите и собственное окно (окно проверяющего приложения) и дочернее окно среды Delphi (в момент разработки приложения, для Delphi 1.0).

      Пример:

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

      procedure TForm1.FormCreate(Sender: TObject);
      VAR

        Wnd : hWnd;
        buff: ARRAY [0..127] OF Char;
        WC: TWndClass;

      begin

        Wnd := GetWindow(Handle, gw_HWndFirst);
        WHILE Wnd <> 0 DO BEGIN

          {Если не собственное и не дочернее окно}
          IF (Wnd <> Application.Handle) AND (GetWindow(Wnd, gw_Owner) = 0) THEN BEGIN

            GetWindowText(Wnd, buff, sizeof(buff));
            {Если заголовок совпадает, то...}
            IF StrPas(buff) = Application.Title THEN BEGIN

              MessageDlg('Приложение уже загружено', mtWarning, [mbOk], 0);
              Halt;

            END;

          END;
          Wnd := GetWindow(Wnd, gw_hWndNext);

        END;

      end;

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


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



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