明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2116|回复: 6

怎样将输入法设定为西文或中文?绝大多数程序完成后转西文输入法是有用的.

[复制链接]
发表于 2008-4-29 14:12 | 显示全部楼层 |阅读模式
怎样将输入法设定为西文或中文?绝大多数程序完成后转西文输入法是有用的.
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2008-4-29 23:10 | 显示全部楼层
很多输入法有快速切换键的,如shift。也可自定义
 楼主| 发表于 2008-4-30 08:05 | 显示全部楼层

谢谢版主。我的主要目的是在程序结束时,自动设定为西文输入方式。可能的方法:

1) 通过sendkey发出ctr+space,实现中西文切换,但怎样用lisp判断目前是处于中文或西文输入状态?

或2) 在操作系统中定义西文输入法的快捷键,用sendkey实现,但怎样才能用lisp设定快捷键?,否则每台机器都要手动设定快捷键才行。

发表于 2008-4-30 10:02 | 显示全部楼层
这个用LISP可能不好做,但可以用其它的高级语言做,如用VB做一个ActivexDLL,在LISP中就可以直接调用了。
 楼主| 发表于 2008-4-30 10:48 | 显示全部楼层

是这样的。但请问用VB怎样才能实现:

1)判断目前是处于中文或西文输入状态?

或2)直接设定成西文输入方式?

或3)定义西文输入方式的快捷键?

发表于 2008-5-1 21:58 | 显示全部楼层

这个在网上应该都能搜索到,我也没有做过。以下代码供参考

Option Explicit

'Check其他的window是否有开启IME,前题是已取得该window的hwnd

Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function ImmIsIME Lib "imm32.dll" (ByVal hkl As Long) As Long
Private Declare Function GetKeyboardLayout Lib "user32" _
        (ByVal dwLayout As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" _
        (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private hwnd5 As Long

Private Sub Command1_Click()
Dim hthr As Long
Dim pid As Long, hkb5 As Long
hthr = GetWindowThreadProcessId(hwnd5, pid) '取得hwnd5所在的threadId
hkb5 = GetKeyboardLayout(hthr) '取得该threadId的keyboardLayout
If ImmIsIME(hkb5) = 1 Then
   Debug.Print "IME is Open"
Else
   Debug.Print "Ime is Close"
End If
End Sub

Private Sub Form_Load()
‘Me.Show
Shell "c:\windows\notepad.exe", vbNormalFocus
hwnd5 = GetForegroundWindow()
End Sub

 楼主| 发表于 2008-5-4 13:18 | 显示全部楼层

谢谢6楼,下来慢慢学习。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-9 19:19 , Processed in 0.156126 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表