Выйти из окон с помощью VBA - PullRequest
       0

Выйти из окон с помощью VBA

0 голосов
/ 28 сентября 2018

Я делаю приложение в VBA, и после примерно 15 минут бездействия программа открывает отдельную форму пользователя и начинает обратный отсчет с 60. По истечении этого времени я хочу, чтобы окна выходили из системы, чтобы любые данныене будут скомпрометированы студентами, или ничего не будет разрушено.Тем не мение;потратив почти час на просмотр форумов и моего учебника, я не могу найти функционирующий простой кусок кода.Любые фрагменты или предложения приветствуются:)

Большое спасибо:)

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Вы также можете использовать shutdown.exe для выхода из системы.Пример ниже

Sub LogOffComputer()
'https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/shutdown
    Dim oShell
    Set oShell = CreateObject("Shell.Application")
    oShell.ShellExecute "cmd.exe", "shutdown.exe /l /f"
    Set oShell = Nothing
End Sub
0 голосов
/ 28 сентября 2018

Вы можете просто заблокировать рабочую станцию ​​

Declare Function LockWorkStation Lib "user32.dll" () As Long
Public Sub LockPC()
    LockWorkStation
End Sub

Обновить Вы также можете выйти из системы, но имейте в виду, что все приложения закрыты и обычно ничего не сохраняется.

Option Explicit

Private Declare Function ExitWindowsEx Lib "User32" ( _
  ByVal uFlags As Long, _
  dwReserved As Long) As Long

Private Const EWX_FORCE = 4
Private Const EWX_LOGOFF = 0
Private Const EWX_REBOOT = 2
Private Const EWX_SHUTDOWN = 1
Private Const EWX_POWEROFF = 8

Sub Logoff()
Dim Retval As Long

    Retval = ExitWindowsEx(EWX_LOGOFF, 0&)
    If Retval = 0 Then MsgBox "Could not log off", vbOKOnly + vbInformation, "Logoff"

End Sub

Внимание Для 64-битного Excel необходимо адаптировать декларации API , посмотрите здесь .Часто вам нужно только добавить PtrSafe и заменить Long на LongLong

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...