模拟windowskey+;visual basic中的L?

模拟windowskey+;visual basic中的L?,windows,winapi,vba,vb6,Windows,Winapi,Vba,Vb6,我想在visual basic中模拟WindowsKey+L(锁定控制台的捷径),并将其绑定到函数。因此,当调用此函数时,它将锁定控制台。 我可以这样做吗?模拟热键是错误的方法。你所需要做的就是打电话给警察。这与按Ctrl+Alt+Del并选择“锁定工作站”或使用Win+L热键的结果相同,只是您可以通过代码以编程方式执行此操作 要从VB应用程序调用此函数,需要编写声明,如下所示: Private Declare Function LockWorkStation Lib "user32.dll"

我想在visual basic中模拟WindowsKey+L(锁定控制台的捷径),并将其绑定到函数。因此,当调用此函数时,它将锁定控制台。
我可以这样做吗?

模拟热键是错误的方法。你所需要做的就是打电话给警察。这与按Ctrl+Alt+Del并选择“锁定工作站”或使用Win+L热键的结果相同,只是您可以通过代码以编程方式执行此操作

要从VB应用程序调用此函数,需要编写声明,如下所示:

Private Declare Function LockWorkStation Lib "user32.dll" () As Long
在定义任何过程之前,您需要将该声明放在模块文件的顶部。然后,在其中一个过程中,可以调用该函数。例如:

Private Sub LockComputer()
    LockWorkStation
End Sub

更好的代码将检查
lockstation
的返回值是否有错误代码。返回值为0表示错误。在VB中检查Win32错误的标准方法,
Err.LastDllError
,将为您提供有关到底出了什么问题的更多信息。

已经有了一个VBA标记,这告诉了我们需要知道的一切。只要它不是VB.NET,您就可以在VBA中使用与在VB6中相同的方法来执行此操作。中的相关问题以及所有问题的答案都完全相同!+是的,API是最好的方式。然而,有一个建议。我没有测试过它,但VBA不允许您使用
Private Sub Lock()
我相信“Lock”是一个保留字。也许将其更改为类似于
Private Sub LockPC()
的功能会有所帮助?是的,刚刚测试过。它不允许您使用
。Vb6也不允许您使用它。诸如此类,这就是我发布未经测试的代码所得到的!谢谢你的提醒。有什么理由把API调用包装在一个单独的子函数或函数中吗?我看不到。如果你真的想要一个不同的名字,Declare有一个Alias子句。不,只是一个例子,说明它像一个普通函数一样被调用。没有很好的理由把它结束。