如何在vba中用GetKeyboardLayoutList获取所有的键盘布局的句柄?

api函数GetKeyboardLayoutList可以获取所有的当前显示在系统“文本服务和输入语言”中的键盘布局。

它的语法如下:

int GetKeyboardLayoutList(
  int nBuff,
  HKL *lpList
);

其中参数nBuff表示预设的最大的获取键盘布局的句柄数, *lpList参数为指向存储键盘布局句柄的数组指针。

如果这个函数执行成功,将返回实际获取到的键盘布局的句柄数。

要在vba中使用这个函数,函数的声明很重要,以下是在vba中使用这个函数的示例代码:

Declare Function GetKeyboardLayoutList Lib "user32" (ByVal nBuff As Long, ByVal lpList As Long) As Long
Sub QQ1722187970()
    Dim arr(100) As Long
    'VarPtr(arr(0))表示传递数组的第一个元素的地址
    iNum = GetKeyboardLayoutList(100, VarPtr(arr(0)))
    For i = 0 To iNum - 1
        '输出句柄值,句柄的16进制值
        Debug.Print arr(i), VBA.Hex(arr(i))
    Next i
End Sub
       

发表评论