fyw12345 发表于 2020-8-10 16:11:42

输入法自动切换,解决win10,64位重启失效问题

中文输入法ctrl+shift+1,输入法切换 ctrl+shift


下面为代码:
;封小风20160923,20180129加入鼠标双击反应器20180331增加了快速添加命令20200810解决win10输入法重启失效问题
;英文输入法ctrl+shift
;cad输入法自动切换程序
(vl-load-reactors)
(vl-load-com)
(setq shell (vlax-create-object "WScript.Shell"))
(vlax-invoke shell "SendKeys" "+^1")
(vlax-invoke shell "SendKeys" "+^")
(if (not mouse_reactor) (setq mouse_reactor (vlr-mouse-reactor nil '((:vlr-beginDoubleClick . test11)))))
(defun test11(a b)
        (vlax-invoke shell "SendKeys" "+^1")
)
;;;设计的输入切换命令
;;;x参数命令集合
(defun mlh(c)
        (setq mljh '("FIND" "MTEDIT" "DDEDIT" "TEXT" "TEXTEDIT" "MTEXT" "_saveas"))
        (setq mljh1 (mapcar '(lambda (x) (= (car c) x)) mljh))
        (apply 'or mljh1)
        )
;cad命令输入反应器
(if (not command_reactor)(setq command_reactor
        (vlr-command-reactor NIL '((:vlr-commandWillStart . Test_12)))
))
(defun test_12(a b)
        (if (mlh b)       
                        (progn (vlax-invoke shell "SendKeys" "+^1")
                                )
        (princ)   
        ))
;;取消CAD命令反应器
(if (not command_reactor3)(setq command_reactor3
        (vlr-command-reactor nil '((:vlr-commandCancelled . Test2)))
))

(defun Test2(a b)
        (if (mlh b)                       
                        (progn (vlax-invoke shell "SendKeys" "+^1")
                                (vlax-invoke shell "SendKeys" "+^")
                               
                        )
        (princ)

        ))
;;;无法完成CAD命令反应器
(if (not command_reactor2)(setq command_reactor2
        (vlr-command-reactor nil '((:vlr-commandFailed . Test5)))
))

(defun Test5(a b)
        (if (mlh b)               
                        (progn (vlax-invoke shell "SendKeys" "+^1")
                                (vlax-invoke shell "SendKeys" "+^")
                               )
        (princ)

        ))
;;;cad命令完成反应器
(if (not command_reactor1)(setq command_reactor1
        (vlr-command-reactor NIL '((:vlr-commandEnded . Test3)))
))
(defun test3(a b)
        (if (not (= (car b) "QSAVE"))
                (progn (vlax-invoke shell "SendKeys" "+^1") ;ctrl+shift+1为中文,ctrl+shift^5为英文
                        (vlax-invoke shell "SendKeys" "+^")
                )
        )
        ;(vlax-invoke shell "SendKeys" "^5")
        (princ)
)



(defun c:bangzhu()
        (alert "输入法设置ctrl+shift+1为中文,ctrl+shift为英文")
)


yaokui25 发表于 2020-8-11 18:32:09

本帖最后由 yaokui25 于 2020-8-11 18:33 编辑

楼主,你好如果有多个输入法的情况怎么办,如何添加修改快捷键设置
例如
英文,日文,中文

oldskooler 发表于 2021-4-20 13:23:38

本帖最后由 oldskooler 于 2021-4-23 14:16 编辑

感谢分享,能否增加在程序加载后,暂时停止双击时切换输入法的功能,

经过摸索,终于自己搞定了,分享出来,在楼主程序末尾添加以下内容,然后可以用命令autoime切换开关
;;;添加控制开关
(defun c:autoime()   
(if (/= autoimeonoff 0) (setq autoimeonoff 1))
(cond
       ((= autoimeonoff 0) ((vlr-add mouse_reactor) (vlr-add command_reactor) (setq autoimeonoff 1) (princ "自动切换输入法打开。")))
       ((= autoimeonoff 1) ((vlr-remove mouse_reactor) (vlr-remove command_reactor) (setq autoimeonoff 0) (princ "自动切换输入法关闭。")))
   )
(princ)
)

xman00 发表于 2021-4-25 13:19:03

本帖最后由 xman00 于 2021-4-25 13:20 编辑

fyw12345 发表于 2021-4-24 13:38
大写开启,测试正常,空输入格具体是什么情况?
如图,如果是大写状态结束输入,就会有个空输入格卡着。重新尝试了下,至少cad2007是有这样的情况的(我电脑装的2007和2018双版本切换使用)。


fyw12345 发表于 2020-8-10 16:13:44

win10系统下,保留两个输入法,一个中文,一个英文,中文快捷键ctrl+shift+1,中英文切换是ctrl+shift,加载测试,重启电脑测试

longer1000 发表于 2020-8-12 01:19:43

经测试,可以正常运行。不知道WIN10怎么回事,老是自动的修改输入法按键顺序

fyw12345 发表于 2020-8-13 12:52:36

longer1000 发表于 2020-8-12 01:19
经测试,可以正常运行。不知道WIN10怎么回事,老是自动的修改输入法按键顺序

修改后不影响程序使用,你软件重启,电脑重启试试,应该是可以正常使用的

fyw12345 发表于 2020-8-13 12:54:08

yaokui25 发表于 2020-8-11 18:32
楼主,你好如果有多个输入法的情况怎么办,如何添加修改快捷键设置
例如
英文,日文,中文

如果是win7系统可以用旧版本的,指定中文,英文输入法热键,如果是win10目前没有办法解决

tryhi 发表于 2020-8-14 10:41:27

建议取消、完成、未完成反应器剔除掉"QUIT" "CLOSE"这两个命令,不然有一定几率致命错误

fyw12345 发表于 2020-8-18 16:56:37

tryhi 发表于 2020-8-14 10:41
建议取消、完成、未完成反应器剔除掉"QUIT" "CLOSE"这两个命令,不然有一定几率致命错误

好的,海哥

yaokui25 发表于 2020-8-18 18:56:04

楼主怎么才能解决 Ctrl+Z 不能连续执行的问题呢。

softbird 发表于 2020-10-13 10:55:48

本帖最后由 softbird 于 2020-10-13 12:05 编辑

楼主你好,win10,2006cad,保留美式英文输入法可以了,正常使用
页: [1] 2 3
查看完整版本: 输入法自动切换,解决win10,64位重启失效问题