Board logo

标题: 批处理文件怎样映射键盘? [打印本页]

作者: liu12300123    时间: 2012-2-23 10:13     标题: 批处理文件怎样映射键盘?

比如说:设定10秒内,检测到键盘按下“E”则打开某网站、计算器、指定的文本“A.TXT”;检测到键盘按下“空格”则关闭已运行的指定程序(最好多个);检测到“Q”则启动“QQ”什么的 可否?
不知是否有高手解答下
作者: cjiabing    时间: 2012-2-23 10:50

请使用第三方!~在论坛第三方版块。
因为,第一,批处理不善于监控;第二,批处理不善于获得键盘操作。
当然,你想按下键盘就知道结果而无须enter也是可以的。
作者: liu12300123    时间: 2012-2-23 11:29

可以?  怎么弄?   第三方?  软件吗?  VBS?
作者: liu12300123    时间: 2012-2-23 12:34     标题: 有高解答否?此题应该有难度····监控键盘指令

比如说:设定10秒内,检测到键盘按下“E”则打开某网站、计算器、指定的文本“A.TXT”;检测到键盘按下“空格”则关闭已运行的指定程序(最好多个);检测到“Q”则启动“QQ”什么的 可否?
不知是否有高手解答下  求解
作者: Perl    时间: 2012-2-23 13:08

回复 2# cjiabing


choice命令可以限时输入的吧?
作者: cjiabing    时间: 2012-2-23 13:13

回复 4# Perl


    你说的限时和我说的不一样呢。批处理可以限时啊,用choice也得,用其他办法也得(搜索:按任意键和自动退出)。不过我从来没用过choice和shift,既然被淘汰了就不必用了。
作者: Perl    时间: 2012-2-23 13:22

回复 5# cjiabing


Vista和Windows7都是自带choice命令的,淘汰一词从何说起啊?
作者: cjiabing    时间: 2012-2-23 13:52

回复 6# Perl


    没有过xp以上的,xp没有呢。看来是我淘汰了。
作者: cjiabing    时间: 2012-2-23 14:04

不要开那么多帖!~把标题的重心放在前面!~
作者: vsbat    时间: 2012-2-23 14:07

低级键盘钩子 WH_KEYBOARD_LL
最适合了~~~
作者: liu12300123    时间: 2012-2-23 14:26

求高手详解,偶只会模仿,还未超越·····
作者: liu12300123    时间: 2012-2-23 14:30

找到一个关于屏蔽的,不知运行程序和10秒内有效 怎么弄?
  1.  LRESULT  CALLBACK  LowLevelKeyboardProc(int  nCode,  WPARAM  wParam,  LPARAM  lParam)  
  2.   {  
  3.          BOOL  fEatKeystroke  =  FALSE;  
  4.          PKBDLLHOOKSTRUCT  p  =  NULL;  
  5.     if  (nCode  ==  HC_ACTION)   
  6.          {  
  7.                  p  =  (PKBDLLHOOKSTRUCT)  lParam;  
  8.                  switch  (wParam)   
  9.                  {  
  10.                          case  WM_KEYDOWN:   
  11.                          case  WM_SYSKEYDOWN:  
  12.                                                  case  WM_KEYUP:         
  13.                          case  WM_SYSKEYUP:   
  14.                  fEatKeystroke  =  (p->vkCode  ==  VK_LWIN)    ¦  ¦  (p->vkCode  ==  VK_RWIN)    ¦  ¦    //  屏蔽Win  
  15.                  //  屏蔽Alt+Tab  
  16.                  ((p->vkCode  ==  VK_TAB)  &&  ((p->flags  &  LLKHF_ALTDOWN)  !=  0))    ¦  ¦  
  17.                  //  屏蔽Alt+Esc  
  18.                  ((p->vkCode  ==  VK_ESCAPE)  &&  ((p->flags  &  LLKHF_ALTDOWN)  !=  0))    ¦  ¦  
  19.                  //  屏蔽Ctrl+Esc  
  20.                  ((p->vkCode  ==  VK_ESCAPE)  &&  ((GetKeyState(VK_CONTROL)  &  0x8000)  !=  0));  
  21.                  break;  
  22.                          default:  
  23.                                  break;  
  24.              }  
  25.          }  
  26.   return  (fEatKeystroke  ?  TRUE  :  CallNextHookEx(glhHook,nCode,wParam,lParam));  
  27.   }  
复制代码

作者: ivor    时间: 2012-2-23 14:52

Hook 不太懂这方面的内容
作者: Perl    时间: 2012-2-23 20:52

回复 3# liu12300123


试试choice命令吧
作者: Perl    时间: 2012-2-23 21:41

choice命令不满足要求吗?
作者: vsbat    时间: 2012-2-24 08:01

找到一个关于屏蔽的,不知运行程序和10秒内有效 怎么弄?
liu12300123 发表于 2012-2-23 14:30



    运行程序 就拦截指定按键然后 ShellExecute/CreateProcess
  设置延时就拦截指定按键 然后 SetTimer




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2