用VB读取和控制Windows的中文输入法

 

在Windows中我们可以用“Ctrl+Shift”键来调入或切换中文输入法,但是这样做每次都是使位于输入法列表顶端的那个输入法首先被调用。通常我们都要连续按好几次“Ctrl+Shift”才能将习惯的输入法调出。我编制了一段小程序,通过它可以把任意一个输入法放在输入法列表的顶端。
  它的原理是:使用LoadKeyboardLayout函数可以改变输入法的顺序,只要在第一个参数中传递目标输入法的KeyboardlayoutName,第二个参数用KLF_REORDER就可以了。
  例如,aa = LoadKeyboardLayout(″00000409″, KLF_REORDER) 使英文变成第一。那怎样获得KeyboardlayoutName呢?因为使用GetKeyboardLayoutname可以返回当前输入法的KeyboardlayoutName,所以我们可以先用GetKeyboardLayoutList 函数来取得所有输入法,再用activateKeyboardlayout()函数设置当前输入法,最后就可以得到它的KeyboardlayoutName了。具体步骤如下:
  打开VB后选择标准的EXE文档,在Form1上添加一个Combobox和一个command控件,输入以下程序。
  ′以下的API函数用于输入法操作
  Private Declare Function GetKeyboardLayoutList Lib ″user32″ _
  (ByVal nBuff As Long, lpList As Long) As Long
  Private Declare Function ImmGetDescription Lib ″imm32.dll″ _
  Alias ″ImmGetDescriptionA″ (ByVal hkl As Long, _
  ByVal lpsz As Strin
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
调用 Windows API 可以在 VB6 和 VB.NET 中实现。下面是一个简单的例子来展示如何在 VB6 和 VB.NET 中使用 Windows API。 VB6中使用 Windows API: 在 VB6 中,可以使用 Declare 语句来引用 Windows API 函数。下面是一个使用 Windows API 获取系统时间的例子: ``` Private Declare Function GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME) As Long Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type Private Sub Command1_Click() Dim st As SYSTEMTIME GetSystemTime st MsgBox "Current time is " & st.wHour & ":" & st.wMinute & ":" & st.wSecond End Sub ``` VB.NET中使用 Windows API: 在 VB.NET 中,可以使用 DllImport 属性来引用 Windows API 函数。下面是一个使用 Windows API 获取系统时间的例子: ``` Imports System.Runtime.InteropServices Public Class Form1 <DllImport("kernel32.dll")> Private Shared Function GetSystemTime(ByRef lpSystemTime As SYSTEMTIME) As Integer End Function <StructLayout(LayoutKind.Sequential)> Private Structure SYSTEMTIME Public wYear As Short Public wMonth As Short Public wDayOfWeek As Short Public wDay As Short Public wHour As Short Public wMinute As Short Public wSecond As Short Public wMilliseconds As Short End Structure Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim st As SYSTEMTIME GetSystemTime(st) MessageBox.Show("Current time is " & st.wHour & ":" & st.wMinute & ":" & st.wSecond) End Sub End Class ``` 以上是一个简单的例子,展示了如何在 VB6 和 VB.NET 中使用 Windows API。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值