Новые книги

Это книга о русской блогосфере, написанная как документальный роман-френдлента. Ее герои — самые известные, яркие и успешные блогеры Рунета: Антон Носик, Рустем Адагамов, Артемий Лебедев, Линор Горалик, Марта Кетро, Максим Кононенко, Сталик Ханкишиев, Вера Полозкова — восемь человек, которые стали такими, какие они есть, во многом благодаря интернету и которые сделали интернет таким, каким мы знаем его сегодня. Эти восемь человек — во всех смыслах первые лица русской блогосферы — рассказывают о том, как открыли для себя Всемирную паутину, как обустроили ее и приспособили для жизни. Нам, читающим эту френдленту, решать, как в ней жить сегодня.
Эта книга – самый полный и, по словам экспертов, «самый полезный» самоучитель по ремонту, модернизации и сборке компьютера своими силами.

Вы найдете здесь подробную информацию о программах, комплектующих, устройствах самого последнего поколения.

Вы научитесь сами составлять компьютер из оптимальных для вас комплектующих; самостоятельно правильно ставить и удалять любые программы; «разгонять» свой ПК; менять отжившие блоки и детали на новые; диагностировать и устранять неполадки и сбои и многое, многое другое. Освоив материал этой книги, вы сможете добиться от своей машины максимума производительности при минимуме вложений.

Вопрос и Ответ 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