Архитектура Microsoft Windows для разработчиков



   http://www.travelhunters.ru             

Проверка одновременного выполнения нескольких экземпляров приложения


Обнаружить одновременное выполнение нескольких экземпляров можно, например, вызвав функцию Visual Basic FindWindow при первом запуске приложения. Она проверяет, запущены ли уже его копии. Этот способ работает почти всегда, но он не самый эффективный — например, если пользователь быстро откроет подряд две копии программы, функция FindWindow может дать неверный ответ.

Альтернатива этому методу — использование свойства Prevlnstance объекта Арр. Оно позволяет проверить, была ли уже запущена копия данного приложения.

Пример В этом коде на Visual Basic для обнаружения выполняющейся копии приложения применяется событие Load:

Private Sub Form_Load()

' Проверка наличия выполняющейся копии приложения

If Арр.Prevlnstance = True Then

MsgBox "Это приложение уже запущено.", vbCritical, "MyApp"

End

End If

End Sub

> Проверка наличия работающей копии программы в Visual Basic

  1. Запустите Visual Basic и создайте новый проект типа Standard EXE.
  2. Дважды щелкните форму Forml, чтобы открыть окно кода.
  3. В процедуру события Load вставьте следующий код:

    Private Sub Form_Load( ) If Арр.Prevlnstance Then MsgBox "Эта программа уже запущена." Unload Me End If End Sub

  4. В меню Project выберите пункт Project1 Properties.
  5. Измените Project Name на Instance и нажмите ОК.
  6. В меню File выберите Make Instance.exe.
  7. Средствами Windows Explorer откройте каталог, где Вы создали файл Instance.exe, и дважды щелкните его, чтобы запустить программу.

    После запуска программы на экране появится форма Fonnl.

  8. Дважды щелкните файл Instance.exe в Windows Explorer для запуска второй копии программы.

    На экране появится созданное Вами в Visual Basic окно с сообщением, информирующем, что один экземпляр приложения уже запущен.

  9. Нажмите ОК, чтобы свернуть окно сообщений, а затем закройте работающий экземпляр программы.



  10. Содержание  Назад  Вперед