Excel 使用VBA注销windows

Excel 使用VBA注销windows,excel,vba,windows,Excel,Vba,Windows,我正在用VBA制作一个应用程序,在大约15分钟的不活动后,程序打开一个单独的用户窗体,并从60开始倒数。在这段时间结束后,我希望让windows注销,这样任何数据都不会被学生泄露,或者什么都不会被破坏。然而在花了将近一个小时浏览论坛和我的课本之后,我找不到一段有效的、简单的代码。欢迎提供任何片段或建议:) 非常感谢:)您可以锁定工作站 Declare Function LockWorkStation Lib "user32.dll" () As Long Public Sub LockPC()

我正在用VBA制作一个应用程序,在大约15分钟的不活动后,程序打开一个单独的用户窗体,并从60开始倒数。在这段时间结束后,我希望让windows注销,这样任何数据都不会被学生泄露,或者什么都不会被破坏。然而在花了将近一个小时浏览论坛和我的课本之后,我找不到一段有效的、简单的代码。欢迎提供任何片段或建议:)


非常感谢:)

您可以锁定工作站

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并用LongLong替换Long,也可以使用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

请看。我有但不是它一直在说ExitWindowsEx?Dim Action作为长ActiveWorkbook的无效语法。Save Application.DisplayAlerts=False Action=ExitWindowsEx(EWX_注销,0&)Application.QuitFYI您可以将您的代码转换为问题本身(并格式化)谢谢,我会试试:)对不起,我应该把这段代码的不同部分放在哪里?另外,函数语句在我的机器上不起作用,关于64位体系结构的更新?您将代码放在一个普通模块中。你有64位的excel吗?