MS Access / VBA, проверка блокировки рабочего стола - PullRequest
1 голос
/ 14 июня 2011

По сути, я пытаюсь найти способ MS Access (2003) определить, нажал ли пользователь Ctrl + Alt + Del и заблокировал ли он свою рабочую станцию.Если это произойдет, я хочу, чтобы открытая база данных закрылась.В настоящее время у меня есть скрытая форма, которая работает в фоновом режиме и проверяет бездействие, но она ненадежна.

Есть ли способ сделать это в VBA, или я должен сделать это по-другому (или оба)?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 14 июня 2011

Вы не найдете надежного способа сделать это из Access.

  1. Ctrl / Alt / Del на самом деле не блокирует компьютер, он вызывает диалог входа в систему, поэтому вам потребуется вторичное обнаружение, чтобы увидеть, какой вариант пользователь выбирает в этом диалоге.
  2. Что если пользователь нажмет Win + L вместо Ctrl / Alt / Del?
  3. В Win7 (и Vista?) Пользователь может заблокировать компьютер из меню «Пуск» - обычно это действие мыши, а не клавиатуры.
  4. Если Access не является приложением, которое фокусируется в момент нажатия клавиш, оно не видит действия.

Возможно, вы захотите использовать более «надежные» методы определения времени простоя в самом приложении. Каков ваш нынешний подход? Вы застряли с 2003 года, или вы могли бы обновить до 2007/2010?

Может быть, это?

http://www.tek -tips.com / viewthread.cfm? QID = 933476

Как получить простой в Windows XP с помощью VBA?

Они все еще основаны на таймере, не смотря на состояние входа в систему. Код tek-tips - VB, который может быть адаптирован для VBA или нет. Ссылка SO - VBA, и выглядит довольно похоже, поэтому есть потенциал.

0 голосов
/ 03 сентября 2014

Чтобы проверить наличие заблокированной системы в Win 7, вам нужно сделать небольшую хитрость. У меня есть код, который при щелчке блокирует систему (и записывает это время). Затем он будет приостановлен на 5 секунд (метод времени application.wait), который пользователь не увидит, поскольку система заблокирована. Затем поместите окно сообщения в коде. Когда пользователь вернется, он увидит всплывающее окно с сообщением «Ваш перерыв закончен». Введите код для всплывающей кнопки, чтобы записать время, когда кнопка Ok / Cancle нажата. Таким образом вы захватываете оба раза - 1. когда система заблокирована и когда она разблокирована.

Пожалуйста, дайте мне знать, если у вас есть какие-либо проблемы. riyajshaikh7@gmail.com

...