如何在vba中使用GetKeyboardLayoutName函数?

api函数GetKeyboardLayoutName在msdn中的说明如下:

Retrieves the name of the active input locale identifier (formerly called the keyboard layout) for the system.

获取系统的当前的键盘布局的句柄的名称。

它的语法如下:

其中参数pwszKLID为接收当前的键盘布局的句柄的名称的缓冲区,包括结尾Null字符。

但是在vba中,不能直接将pwszKLID参数定义为字符串类型,而应该传递字符串变量实际存储地址。

代码如下:

注意GetKeyboardLayoutName函数的VB声明形式

Declare Function GetKeyboardLayoutName Lib “user32” Alias “GetKeyboardLayoutNameW” (ByVal pwszKLID As Long) As Long

ByVal pwszKLID As Long

参数pwszKLID传递的是字符串变量的实际存储地址,只有这样声明才能获取到正确的值。

如果将GetKeyboardLayoutName函数与GetKeyboardLayout函数一起使用,我们会发现,它们获取的都是键盘布局的句柄,可以用如下的代码检验:

GetKeyboardLayoutName函数获取的键盘布局名称就是GetKeyboardLayout函数获取的句柄的16进制值。

       

发表评论