找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 8747|回复: 53

[研讨] 切换输入法的Ctrl+空格

  [复制链接]

已领礼包: 604个

财富等级: 财运亨通

发表于 2016-9-6 16:22:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 /db_自贡黄明儒_ 于 2016-9-6 16:32 编辑

wscript.shell大有可为

objwsh.SendKeys strRead                      '向当前活动窗口发送按键
'下面是操作键的发送代码
退格键             {BACKSPACE}、{BS} 或 {BKSP}
BREAK              {BREAK}
CAPS LOCK          {CAPSLOCK}
DEL 或 DELETE      {DELETE} 或 {DEL}
向下键             {DOWN}
END                {END}
ENTER              {ENTER} 或 ~
ESC                {ESC}
HELP               {HELP}
HOME               {HOME}
INS 或 INSERT      {INSERT} 或 {INS}
向左键             {LEFT}
NUM LOCK           {NUMLOCK}
PAGE DOWN          {PGDN}
PAGE UP            {PGUP}
向右键             {RIGHT}
SCROLL LOCK        {SCROLLLOCK}
TAB                {TAB}
向上键             {UP}
F1 至 F12          {F1} 至 {F12}
SHIFT              +
CTRL               ^
ALT                %
+ { 等修饰符       {+} {{} {^} {}} {%}

'如果在按 e 和 c 的同时按 SHIFT 键,则发送字符串参数 +(ec)
'可发送一个键的重复键击。如10次x,为{x 10},但不可发送10次组合键,如Ctrl+x
'不能发送 PRINT SCREEN 键 {PRTSC}
'常用 Wscript.Sleep 来延时若干毫秒发送按键,避免程序来不及响应
  1. (defun sendkeys  (keys)
  2.   (or *WSH* (setq *WSH* (vlax-get-or-create-object "wscript.shell")))
  3.   (vlax-invoke-method *WSH* 'sendkeys keys)
  4.   (princ)
  5. )

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2016-9-6 16:24:17 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2016-9-6 16:29 编辑

哦,原来是这样的
游客,如果您要查看本帖隐藏内容请回复
中英文输入自动切换,有些高手写了这个程序,但是要先进行设置,这很不爽。我们可以向键盘发送ctrl+空格来切换,剩下的问题就是如何判断是否在中文(或者英文)状态下。先发送一个字母,根据返回结果来判断?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5605个

财富等级: 富甲天下

发表于 2016-9-6 17:17:33 | 显示全部楼层
SENDKEY,曾经用过,但不明其理,黄大侠的文章也许对我有帮助
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2016-9-6 17:17:55 | 显示全部楼层
原来是怎么样的呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 837个

财富等级: 财运亨通

发表于 2016-9-7 02:36:59 来自手机 | 显示全部楼层
看看黄大师最近的作品
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2016-12-7 11:42:09 | 显示全部楼层
按高飞鸟大师的DynamicWrapperX注册后,终于可以关闭中文输入法了
;;不论CapsLock是否锁定,小写返回0,大写1
;;&H14 十六进制;20十进制
(DEFUN CapsLock ()
  ;;(setq :VK_CAPITAL 20)
  (setq *wrap* (vlax-create-object "DynamicWrapperX"))
  (vlax-invoke *wrap* 'Register "user32" "GetKeyState" "i=l" "r=l")
  (vlax-invoke *wrap* 'GetKeyState 20);同(vlax-invoke wrap 'GetKeyState &H14)
)

;;;GetKeyboardLayout(0) '134481924英文
;;;返回T 为英文状态
(DEFUN IMSEnglish ()
  (setq *wrap* (vlax-create-object "DynamicWrapperX"))
  (vlax-invoke *wrap* 'Register "user32" "GetKeyboardLayout" "i=l" "r=l")
  (= (vlax-invoke *wrap* 'GetKeyboardLayout 0) 134481924)
)

游客,如果您要查看本帖隐藏内容请回复
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2016-12-7 12:23:11 | 显示全部楼层
  1. (setq :VK_CAPITAL 20)        ;0x14
  2. (setq $DWrapX (vlax-create-object "DynamicWrapperX"))
  3. (if $DWrapX
  4.   (progn
  5.     ;(vlax-invoke $DWrapX 'Register "user32.dll" "keybd_event" "i=bbll" "r=l")        ;注册keybd_event函数:模拟键盘事件
  6.     ;(vlax-invoke $DWrapX 'Register "user32.dll" "MapVirtualKey" "i=uu" "r=u")        ;注册MapVirtualKey函数:获取键盘映射
  7.     (vlax-invoke $DWrapX 'Register "user32.dll" "GetKeyState" "i=l" "r=n")        ;注册GetKeyState函数:获取键状态
  8.     ;(vlax-invoke $DWrapX 'Register "kernel32.dll" "Sleep" "i=d" "r=n")                ;
  9.     )
  10.   )

  11. ;输入命令
  12. (defun EF_SendKeys (sKeys / obj)
  13.   (setq obj (vlax-create-object "WScript.Shell"))
  14.   (vlax-invoke-method obj 'SendKeys sKeys)
  15.   (vlax-release-object obj)
  16.   )

  17. ;执行
  18. (defun EF_AutoCapsLock:ON()
  19.   (if $EF_AutoCapsLock:Debug (princ (strcat "\n[CapsLock ON]")))
  20.   (if (/= (vlax-invoke $DWrapX 'GetKeyState :VK_CAPITAL) 1)
  21.     (EF:SendKeys "{CAPSLOCK}")
  22.     )
  23.   )
  24.    
  25. (defun EF_AutoCapsLock:OFF()
  26.   (if $EF_AutoCapsLock:Debug (princ (strcat "\n[CapsLock OFF]")))
  27.   (if (/= (vlax-invoke $DWrapX 'GetKeyState :VK_CAPITAL) 0)
  28.     (EF:SendKeys "{CAPSLOCK}")
  29.     )
  30.   )

评分

参与人数 1D豆 +10 收起 理由
/db_自贡黄明儒_ + 10

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2016-12-7 14:43:47 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2016-12-7 14:44 编辑

我觉得AutoCad是用来画图的,所以很少关心处理文字。
但是在处理明细表时,得输入汉字。于是不断输入ed,处理明细;输入ed,处理明细...
可是再次输入ED是,忘了要切换输入法,结果一看是汉字,只好关闭重新输入。有一天,终于烦了,
于是我想,鼠标在命令栏,“输入法”总是英文多好。
最先看到的是elitefish大师的中英切换,便是感觉设置比较麻烦

经过多方尝试,终于可以实现。下面简单的代码在08、16下就可以实现(但在05(EN)未成功)。这毕竟是好的开头。
虽然08、16下实现了,但如果中文状态,总是会被关闭。同我的想像还是有点距离。
如果05(en)下要成功,还得注册高飞鸟大师发了DynamicWrapperX
(VLR-editor-Reactor
  nil
  '((:vlr-commandEnded . command-will-start))
)
(defun command-will-start (reactor command-list)
  (vl-vbarun "KeyStatesCAPITAL")
)
;;KeyStatesCAPITAL上在KeyStatesCapital.dvb中定义的,当然你得先加载它,其源码如下
;;;Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
;;;Public Sub KeyStatesCAPITAL()
;;;    Set WshShell = CreateObject("wscript.shell")
;;;    If GetKeyState(&H14) = 1 Then WshShell.SendKeys "{CAPSLOCK}"
;;;End Sub


KeyStatesCapital.rar

3.16 KB, 下载次数: 99, 下载积分: D豆 -1 , 活跃度 1

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 48个

财富等级: 招财进宝

发表于 2017-3-30 01:25:22 | 显示全部楼层
好东西,谢谢分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2017-4-27 01:54:30 来自手机 | 显示全部楼层
回帖 我 看看看
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2017-4-27 12:45:16 | 显示全部楼层
我来测试一下,行不行”
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5个

财富等级: 恭喜发财

发表于 2017-5-4 18:15:14 | 显示全部楼层
看看研究成果
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

发表于 2017-5-4 23:23:47 来自手机 | 显示全部楼层
这种东西lisp不好处理,arx很方便,c#也可以,不过碰到win10+
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

发表于 2017-5-4 23:25:43 来自手机 | 显示全部楼层
搜狗输入法,奇形怪状的输入法就要另外处理
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2017-5-22 16:45:20 | 显示全部楼层
看看,学习一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-27 02:58 , Processed in 0.494429 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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