切换五笔输入法,只有notepad成功word等等失败
朋友们给的代码是下面这样的。记事本可以成功切换极点五笔输入法,打出中文我就把notepad改成Word
打出字来成英文的了
不知道怎么回事
Opt("WinTitleMatchMode", 4)
Run("C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE")
Sleep(500)
$hWnd = WinGetHandle("classname=Word")Opt("WinTitleMatchMode", 4)
Run("notepad.exe")
Sleep(500)
$hWnd = WinGetHandle("classname=Notepad")
;~ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts
$KeyStr=_GetKeyboardLayout($hWnd)
$KeyName=RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\" & $KeyStr, "Layout Text")
MsgBox (0, $KeyStr, $KeyName);显示当前输入法
LoadKeyboardLayout("E0060804", $hWnd);极点五笔
Sleep(500)
Send("kljg")
Func _GetKeyboardLayout($hWnd)
Local $ret = DllCall("user32.dll", "long", "GetWindowThreadProcessId", "hwnd", $hWnd, "ptr", 0)
$ret = DllCall("user32.dll", "long", "GetKeyboardLayout", "long", $ret)
Return Hex($ret, 8)
EndFunc
Func LoadKeyboardLayout($sLayoutID, $hWnd)
Local $WM_INPUTLANGCHANGEREQUEST = 0x50
Local $ret = DllCall("user32.dll", "long", "LoadKeyboardLayout", "str", $sLayoutID, "int", 1 + 0)
DllCall("user32.dll", "ptr", "SendMessage", "hwnd", $hWnd, "int", $WM_INPUTLANGCHANGEREQUEST, "int", 1, "int", $ret)
EndFunc ;==>LoadKeyboardLayout ;Opt("WinTitleMatchMode", 4)
Run("C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE")
Sleep(2000)
$hWnd = WinGetHandle("")
;~ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts
$KeyStr=_GetKeyboardLayout($hWnd)
$KeyName=RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\" & $KeyStr, "Layout Text")
MsgBox (0, $KeyStr, $KeyName);显示当前输入法
LoadKeyboardLayout("E0210804", $hWnd);qq五笔
Sleep(500)
Send("kljg")
Func _GetKeyboardLayout($hWnd)
Local $ret = DllCall("user32.dll", "long", "GetWindowThreadProcessId", "hwnd", $hWnd, "ptr", 0)
$ret = DllCall("user32.dll", "long", "GetKeyboardLayout", "long", $ret)
Return Hex($ret, 8)
EndFunc
Func LoadKeyboardLayout($sLayoutID, $hWnd)
Local $WM_INPUTLANGCHANGEREQUEST = 0x50
Local $ret = DllCall("user32.dll", "long", "LoadKeyboardLayout", "str", $sLayoutID, "int", 1 + 0)
DllCall("user32.dll", "ptr", "SendMessage", "hwnd", $hWnd, "int", $WM_INPUTLANGCHANGEREQUEST, "int", 1, "int", $ret)
EndFunc ;==>LoadKeyboardLayout 谢谢,请问Word为什么匹配OpusApp
如果不IE或其他程序呢?
不懂CLASS 明白了。问题解决。 ;Opt("WinTitleMatchMode", 4)
Run("C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE")
Sleep(2000)
$hWnd = WinGetHandle("");窗口类
;~ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts
$KeyStr=_GetKeyboardLayout($hWnd)
$KeyName=RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\" & $KeyStr, "Layout Text")
MsgBox (0, $KeyStr, $KeyName);显示当前输入法
LoadKeyboardLayout("E0060804", $hWnd);五笔
Sleep(500)
Send("kljg")
Func _GetKeyboardLayout($hWnd)
Local $ret = DllCall("user32.dll", "long", "GetWindowThreadProcessId", "hwnd", $hWnd, "ptr", 0)
$ret = DllCall("user32.dll", "long", "GetKeyboardLayout", "long", $ret)
Return Hex($ret, 8)
EndFunc
Func LoadKeyboardLayout($sLayoutID, $hWnd)
Local $WM_INPUTLANGCHANGEREQUEST = 0x50
Local $ret = DllCall("user32.dll", "long", "LoadKeyboardLayout", "str", $sLayoutID, "int", 1 + 0)
DllCall("user32.dll", "ptr", "SendMessage", "hwnd", $hWnd, "int", $WM_INPUTLANGCHANGEREQUEST, "int", 1, "int", $ret)
EndFunc ;==>LoadKeyboardLayout 怎么标记已解决? 回复 6# lqs_lfzz
直接编辑主贴,在标题最后加~~ 回复 7# annybaby
您的主题售价扣除积分交易税后为 0,请返回修改。
我改不了了,死活不行,不知道这是什么规则 积分那么少,晕倒 很不错 顶一下。 代码不错值得收藏谢谢
页:
[1]