zlg258369 发表于 2010-12-20 14:01:56

输入法切换

传一个我做好的,我只用“搜狗”,所以只能切换“搜狗”,需要别的自己写吧。命令”QH“,可以把它加在启动自动运行。



输入法切换的简单方法!!编辑文字时切换中文输入法,编辑文字结束时切换英文输入法

If CodName = "TEXT" Or CodName = "DDEDIT" Or CodName = "MTEXT" Or CodName = "MTEDIT" Then
    If InputLanguage.CurrentInputLanguage.LayoutName <> "中文 (简体) - 搜狗拼音输入法" Then
      SetIme("中文 (简体) - 搜狗拼音输入法")
    End If
Else
    If InputLanguage.CurrentInputLanguage.LayoutName <> "简体中文 - 美式键盘" Then
      SetIme("简体中文 - 美式键盘")
    End If
End If

Private Function SetIme(ByVal languageName As String) As Boolean
    Try
      '循环所有输入法
      For Each l As InputLanguage In InputLanguage.InstalledInputLanguages
            If (l.LayoutName.IndexOf(languageName) >= 0) Then
                '设置输入法
                InputLanguage.CurrentInputLanguage = l
                Return True
            End If
      Next
      Return False
    Catch ex As Exception
      Return False
    End Try
End Function

zlg258369 发表于 2010-12-28 10:49:02

加个窗体,弄个Timer控件,combobox控件,几个checkbox控件,再写个ini文件,这就是个完整的切换设置程序了

雪山飞狐_lzh 发表于 2010-12-20 19:58:13

可以详细的说明下使用环境?
还有感觉把If语句放到函数里更好?

zlg258369 发表于 2010-12-28 10:41:44

在cad使用文字编辑时,需要经常切换输入法,用它就可以自动切换了。
放到Timer控件里面。
private Sub Timer1_Tick(BuVal sender As System.Object,ByVal e As System.eventArgs) Handles Timer1.Tick
If CodName = "TEXT" Or CodName = "DDEDIT" Or CodName = "MTEXT" Or CodName = "MTEDIT" Then
If InputLanguage.CurrentInputLanguage.LayoutName <> "中文 (简体) - 搜狗拼音输入法" Then
SetIme("中文 (简体) - 搜狗拼音输入法")
End If
Else
If InputLanguage.CurrentInputLanguage.LayoutName <> "简体中文 - 美式键盘" Then
SetIme("简体中文 - 美式键盘")
End If
End If
End Sub

glowz 发表于 2010-12-28 10:45:13

很有用的东东
能给出完整的程序码 和详细使用方法吗?
谢谢

zlg258369 发表于 2010-12-28 11:08:23

本帖最后由 zlg258369 于 2010-12-28 14:41 编辑

glowz 发表于 2010-12-28 10:45 http://bbs.mjtd.com/static/image/common/back.gif
很有用的东东
能给出完整的程序码 和详细使用方法吗?
谢谢

窗体部分:
private Sub Timer1_Tick(BuVal sender As System.Object,ByVal e As System.eventArgs) Handles Timer1.Tick

on error resume next

if autodesk.autocad.applicationservices.application.documentmanager.count=0 then

    timer1.stop()

end if

‘漏了一句
dim codname as string = autodesk.autocad.applicationservices.application.acadapplication.activedocument.getvariable("cmdnames")

If CodName = "TEXT" Or CodName = "DDEDIT" Or CodName = "MTEXT" Or CodName = "MTEDIT" Then



If InputLanguage.CurrentInputLanguage.LayoutName <> "中文 (简体) - 搜狗拼音输入法" Then



SetIme("中文 (简体) - 搜狗拼音输入法")



End If



Else



If InputLanguage.CurrentInputLanguage.LayoutName <> "简体中文 - 美式键盘" Then



SetIme("简体中文 - 美式键盘")



End If



End If

endSub类部分: <commandmethod("QH")> _
    public sub srf_qh()

    if autodesk.autocad.applicationservices.application.documentmanager.count=1 then

form.timer1.start()

end if

end subcad命令判断时改为变量,输入法中文改为变量,就能进行设置了。

再加上获取输入法的:(放到button里) for each l as inputlanguage in inputlanguage.installedinputlanguages

combobox1.items.add(l.layoutname.tostring)

next

zlg258369 发表于 2010-12-28 11:13:18

还不太熟,重复了

azbd 发表于 2011-1-3 11:11:26

加载使用,出现异常

zlg258369 发表于 2011-1-4 15:18:54

回复 azbd 的帖子

cad2007的--------

xiaxiang 发表于 2011-1-6 17:49:01

感谢发布源码
页: [1] 2
查看完整版本: 输入法切换