乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 273|回复: 14

[编程交流] 输入法自动切换,解决win10,64位重启失效问题

[复制链接]

4

主题

13

帖子

4

银币

初来乍到

Rank: 1

铜币
29
发表于 2020-8-10 16:11:00 | 显示全部楼层 |阅读模式
中文输入法ctrl+shift+1,输入法切换 ctrl+shift
下面为代码:
  1. ;封小风20160923,20180129加入鼠标双击反应器20180331增加了快速添加命令20200810解决win10输入法重启失效问题
  2. ;英文输入法ctrl+shift
  3. ;cad输入法自动切换程序
  4. (vl-load-reactors)
  5. (vl-load-com)
  6. (setq shell (vlax-create-object "WScript.Shell"))
  7. (vlax-invoke shell "SendKeys" "+^1")
  8. (vlax-invoke shell "SendKeys" "+^")
  9. (if (not mouse_reactor) (setq mouse_reactor (vlr-mouse-reactor nil '((:vlr-beginDoubleClick . test11)))))
  10. (defun test11(a b)
  11.         (vlax-invoke shell "SendKeys" "+^1")
  12. )
  13. ;;;设计的输入切换命令
  14. ;;;x参数命令集合
  15. (defun mlh(c)
  16.         (setq mljh '("FIND" "MTEDIT" "DDEDIT" "TEXT" "TEXTEDIT" "MTEXT" "_saveas"))
  17.         (setq mljh1 (mapcar '(lambda (x) (= (car c) x)) mljh))
  18.         (apply 'or mljh1)
  19.         )
  20. ;cad命令输入反应器
  21. (if (not command_reactor)(setq command_reactor
  22.         (vlr-command-reactor NIL '((:vlr-commandWillStart . Test_12)))
  23. ))
  24. (defun test_12(a b)
  25.         (if (mlh b)        
  26.                         (progn (vlax-invoke shell "SendKeys" "+^1")
  27.                                 )
  28.         (princ)   
  29.         ))
  30. ;;取消CAD命令反应器
  31. (if (not command_reactor3)(setq command_reactor3
  32.         (vlr-command-reactor nil '((:vlr-commandCancelled . Test2)))
  33. ))
  34. (defun Test2(a b)
  35.         (if (mlh b)                        
  36.                         (progn (vlax-invoke shell "SendKeys" "+^1")
  37.                                 (vlax-invoke shell "SendKeys" "+^")
  38.                                 
  39.                         )
  40.         (princ)
  41.         ))
  42. ;;;无法完成CAD命令反应器
  43. (if (not command_reactor2)(setq command_reactor2
  44.         (vlr-command-reactor nil '((:vlr-commandFailed . Test5)))
  45. ))
  46. (defun Test5(a b)
  47.         (if (mlh b)               
  48.                         (progn (vlax-invoke shell "SendKeys" "+^1")
  49.                                 (vlax-invoke shell "SendKeys" "+^")
  50.                                  )
  51.         (princ)
  52.         ))
  53. ;;;cad命令完成反应器
  54. (if (not command_reactor1)(setq command_reactor1
  55.         (vlr-command-reactor NIL '((:vlr-commandEnded . Test3)))
  56. ))
  57. (defun test3(a b)
  58.         (if (not (= (car b) "QSAVE"))
  59.                 (progn (vlax-invoke shell "SendKeys" "+^1") ;ctrl+shift+1为中文,ctrl+shift^5为英文
  60.                         (vlax-invoke shell "SendKeys" "+^")
  61.                 )
  62.         )
  63.         ;(vlax-invoke shell "SendKeys" "^5")
  64.         (princ)
  65. )  (defun c:bangzhu()
  66.         (alert "输入法设置ctrl+shift+1为中文,ctrl+shift为英文")
  67. )

回复

使用道具 举报

0

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
2
发表于 2021-4-20 13:23:00 | 显示全部楼层

感谢分享,能否增加在程序加载后,暂时停止双击时切换输入法的功能,
经过摸索,终于自己搞定了,分享出来,在楼主程序末尾添加以下内容,然后可以用命令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. )
回复

使用道具 举报

14

主题

68

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
124
发表于 2021-4-25 13:19:00 | 显示全部楼层

amnh0zfjtek.png

amnh0zfjtek.png


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

使用道具 举报

4

主题

13

帖子

4

银币

初来乍到

Rank: 1

铜币
29
发表于 2020-8-13 12:54:00 | 显示全部楼层

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

使用道具 举报

4

主题

13

帖子

4

银币

初来乍到

Rank: 1

铜币
29
发表于 2020-8-10 16:13:00 | 显示全部楼层
win10系统下,保留两个输入法,一个中文,一个英文,中文快捷键ctrl+shift+1,中英文切换是ctrl+shift,加载测试,重启电脑测试
回复

使用道具 举报

10

主题

202

帖子

13

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 2020-8-11 18:32:00 | 显示全部楼层

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

使用道具 举报

3

主题

264

帖子

47

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
277
发表于 2020-8-12 01:19:00 | 显示全部楼层
经测试,可以正常运行。不知道WIN10怎么回事,老是自动的修改输入法按键顺序
回复

使用道具 举报

4

主题

13

帖子

4

银币

初来乍到

Rank: 1

铜币
29
发表于 2020-8-13 12:52:00 | 显示全部楼层

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

使用道具 举报

37

主题

267

帖子

15

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
407
发表于 2020-8-14 10:41:00 | 显示全部楼层
建议取消、完成、未完成反应器剔除掉"QUIT" "CLOSE"这两个命令,不然有一定几率致命错误
回复

使用道具 举报

4

主题

13

帖子

4

银币

初来乍到

Rank: 1

铜币
29
发表于 2020-8-18 16:56:00 | 显示全部楼层

好的,海哥
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-1-31 07:56 , Processed in 0.171828 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表