输入法自动切换,解决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:33 编辑
楼主,你好如果有多个输入法的情况怎么办,如何添加修改快捷键设置
例如
英文,日文,中文
本帖最后由 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:20 编辑
fyw12345 发表于 2021-4-24 13:38
大写开启,测试正常,空输入格具体是什么情况?
如图,如果是大写状态结束输入,就会有个空输入格卡着。重新尝试了下,至少cad2007是有这样的情况的(我电脑装的2007和2018双版本切换使用)。
win10系统下,保留两个输入法,一个中文,一个英文,中文快捷键ctrl+shift+1,中英文切换是ctrl+shift,加载测试,重启电脑测试 经测试,可以正常运行。不知道WIN10怎么回事,老是自动的修改输入法按键顺序 longer1000 发表于 2020-8-12 01:19
经测试,可以正常运行。不知道WIN10怎么回事,老是自动的修改输入法按键顺序
修改后不影响程序使用,你软件重启,电脑重启试试,应该是可以正常使用的 yaokui25 发表于 2020-8-11 18:32
楼主,你好如果有多个输入法的情况怎么办,如何添加修改快捷键设置
例如
英文,日文,中文
如果是win7系统可以用旧版本的,指定中文,英文输入法热键,如果是win10目前没有办法解决 建议取消、完成、未完成反应器剔除掉"QUIT" "CLOSE"这两个命令,不然有一定几率致命错误 tryhi 发表于 2020-8-14 10:41
建议取消、完成、未完成反应器剔除掉"QUIT" "CLOSE"这两个命令,不然有一定几率致命错误
好的,海哥 楼主怎么才能解决 Ctrl+Z 不能连续执行的问题呢。 本帖最后由 softbird 于 2020-10-13 12:05 编辑
楼主你好,win10,2006cad,保留美式英文输入法可以了,正常使用