⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2010.html

📁 VB技巧问答10000例 VB技巧问答10000例
💻 HTML
字号:
<html>  <head>    <title>Re: 输入法</title>  </head>  <BODY BACKGROUND="" BGCOLOR="white" TEXT="black" LINK="red" VLINK="#808080" ALINK="">    <center>      <h1>Re: 输入法</h1>    </center><HR><p>Posted by <a href="mailto:cww5@mail.ncku.edu.tw">cww</a> on February 19, 1998 at 02:08:11:<p>In Reply to: <a href="1955.html"><b>输入法</b></a> posted by 吕军贤 on February 16, 1998 at 01:06:02:<p>以下程式可以解决您第一个问题,至于第二个问题设定form1.keypreView = true<br>而后拦截您key in的 键盘,再与取得的keyboard handle做结合,<br>用ActivateKeyboardLayout来设定便可<p>Private Declare Function GetKeyboardLayoutList Lib "user32" (ByVal nBuff As Long, lpList As Long) As Long<br>Private Declare Function ImmGetDescription Lib "imm32.dll" Alias "ImmGetDescriptionA" (ByVal HKL As Long, ByVal lpsz As String, ByVal uBufLen As Long) As Long<br>Private Declare Function ImmIsIME Lib "imm32.dll" (ByVal HKL As Long) As Long<br>Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long<br>Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long<br>Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long<p>Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long<br>Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long<br>Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long<br>Const REG_EXPAND_SZ = 2<br>Const HKEY_CLASSES_ROOT = &H80000000<br>Const HKEY_LOCAL_MACHINE = &H80000002<p>Const READ_CONTROL = &H20000<br>Const STANDARD_RIGHTS_READ = (READ_CONTROL)<br>Const KEY_QUERY_VALUE = &H1<br>Const KEY_ENUMERATE_SUB_KEYS = &H8<br>Const KEY_NOTIFY = &H10<br>Const SYNCHRONIZE = &H100000<br>Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))<br>Private hCurKBDLayout As Long<p>Private Sub Form_Load()<br>Dim NoOfKBDLayout As Long, i As Long, j As Long<br>Dim hKB(24) As Long, BuffLen As Long<br>Dim Buff As String<br>Dim RetStr As String<br>Dim RetCount As Long<p>Buff = String(255, 0)<br>hCurKBDLayout = GetKeyboardLayout(0) '取得目前keyboard layout<br>NoOfKBDLayout = GetKeyboardLayoutList(25, hKB(0))<br>For i = 1 To NoOfKBDLayout<br>   If ImmIsIME(hKB(i - 1)) = 1 Then '中文输入法<br>      BuffLen = 255<br>      RetCount = ImmGetDescription(hKB(i - 1), Buff, BuffLen)<br>      RetStr = Left(Buff, RetCount)<br>      Combo1.AddItem RetStr<br>   Else<br>      ActivateKeyboardLayout hKB(i - 1), 0<br>      GetKeyboardLayoutName Buff  '取得keyboard layout的subkey<br>      j = InStr(1, Buff, Chr(0), vbBinaryCompare)<br>      RetStr = Left(Buff, j - 1)<br>      RetStr = GetRegValue(RetStr)<br>      Combo1.AddItem RetStr<br>   End If<br>   If hKB(i - 1) = hCurKBDLayout Then<br>      Combo1.Text = RetStr<br>   End If<br>Next<br>ActivateKeyboardLayout hCurKBDLayout, 0 '回复原来输入法<br>End Sub<p>Private Function GetRegValue(Qrystr As String) As String<br>Dim key5 As String, KeyValue As String<br>Dim resul As Long<br>Dim subkey As String<br>Dim pr As Long, leng1 As Long<p>key5 = "System\CurrentControlset\control\Keyboard Layouts\" + Qrystr<br>resul = RegOpenKeyEx(HKEY_LOCAL_MACHINE, key5, 0, KEY_READ, pr)<br>subkey = "layout text"<br>leng1 = 255<br>KeyValue = String(255, 0)<br>resul = RegQueryValueEx(pr, subkey, 0, 1, KeyValue, leng1)<br>RegCloseKey pr<br>GetRegValue = Left(KeyValue, leng1 - 1)<p>End Function<p><br><p><a name="followups">Follow Ups:</a><br><ul><!--insert: 2010--></ul><!--end: 2010--><br><HR><p></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -