明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4415|回复: 21

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

  [复制链接]
发表于 2020-8-10 16:11:42 | 显示全部楼层 |阅读模式
中文输入法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为英文")
)


评分

参与人数 2明经币 +2 收起 理由
tryhi + 1 赞一个!
USER2128 + 1 赞一个!

查看全部评分

发表于 2020-8-11 18:32:09 | 显示全部楼层
本帖最后由 yaokui25 于 2020-8-11 18:33 编辑

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

使用道具 举报

发表于 2021-4-20 13:23:38 | 显示全部楼层
本帖最后由 oldskooler 于 2021-4-23 14:16 编辑

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

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


发表于 2021-4-25 13:19:03 | 显示全部楼层
本帖最后由 xman00 于 2021-4-25 13:20 编辑
fyw12345 发表于 2021-4-24 13:38
大写开启,测试正常,空输入格具体是什么情况?

如图,如果是大写状态结束输入,就会有个空输入格卡着。重新尝试了下,至少cad2007是有这样的情况的(我电脑装的2007和2018双版本切换使用)。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2020-8-10 16:13:44 | 显示全部楼层
win10系统下,保留两个输入法,一个中文,一个英文,中文快捷键ctrl+shift+1,中英文切换是ctrl+shift,加载测试,重启电脑测试
发表于 2020-8-12 01:19:43 | 显示全部楼层
经测试,可以正常运行。不知道WIN10怎么回事,老是自动的修改输入法按键顺序
 楼主| 发表于 2020-8-13 12:52:36 | 显示全部楼层
longer1000 发表于 2020-8-12 01:19
经测试,可以正常运行。不知道WIN10怎么回事,老是自动的修改输入法按键顺序

修改后不影响程序使用,你软件重启,电脑重启试试,应该是可以正常使用的
 楼主| 发表于 2020-8-13 12:54:08 | 显示全部楼层
yaokui25 发表于 2020-8-11 18:32
楼主,你好如果有多个输入法的情况怎么办,如何添加修改快捷键设置
例如
英文,日文,中文

如果是win7系统可以用旧版本的,指定中文,英文输入法热键,如果是win10目前没有办法解决
发表于 2020-8-14 10:41:27 | 显示全部楼层
建议取消、完成、未完成反应器剔除掉"QUIT" "CLOSE"这两个命令,不然有一定几率致命错误
 楼主| 发表于 2020-8-18 16:56:37 | 显示全部楼层
tryhi 发表于 2020-8-14 10:41
建议取消、完成、未完成反应器剔除掉"QUIT" "CLOSE"这两个命令,不然有一定几率致命错误

好的,海哥
发表于 2020-8-18 18:56:04 | 显示全部楼层
楼主怎么才能解决 Ctrl+Z 不能连续执行的问题呢。
发表于 2020-10-13 10:55:48 | 显示全部楼层
本帖最后由 softbird 于 2020-10-13 12:05 编辑

楼主你好,win10,2006cad,保留美式英文输入法可以了,正常使用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 07:39 , Processed in 0.158872 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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