在ruby中使用sendkeys发送ctrl + c

时间:2011-08-02 07:35:16

标签: ruby sendkeys wsh win32ole

我需要使用sendkeys函数关闭命令提示符窗口,但是当我使用下面的代码时,它不起作用,因为正在运行某些betch文件,所以它没有采用以下选项。

require 'win32ole'
system("start cmd.exe")
sleep(5)
# Create an instance of the Wscript Shell:
wsh = WIN32OLE.new('Wscript.Shell')

# Try to activate the command window:
if wsh.AppActivate('cmd.exe')    
  sleep(1)    
  wsh.SendKeys('cd \\')
  wsh.SendKeys('{ENTER}')
  # change the directory path where mtn folder is residing   
  wsh.SendKeys('cd ')  
  wsh.SendKeys "C://mtn-3//mtn-2.2//" 
  wsh.SendKeys('{ENTER}')  
  wsh.SendKeys('cd bin')  
  wsh.SendKeys('{ENTER}')  
  #run the cad test node file  
  wsh.SendKeys('CadTestNode.bat')  
  wsh.SendKeys('{ENTER}')
  wsh1.SendKeys('Exit') 
  wsh1.SendKeys('{ENTER}') 

我也尝试用下面的代码替换最后两行来终止进程。

  wsh.SendKeys "^(c)"                 
  wsh.SendKeys('{ENTER}')

但仍然无法终止在命令提示符下运行的进程。

是否还有其他方法可以终止在命令提示符窗口中运行的批处理进程?

2 个答案:

答案 0 :(得分:1)

试试这个:

wsh.SendKeys("^C")

MSDN SendKeys Method中指定此键的以下字符:

  

SHIFT:+

     

CTRL:^

     

ALT:%

示例:

wsh.SendKeys("+{TAB}") # SHIFT+TAB

wsh.SendKeys("^V")     # CTRL+V

wsh.SendKeys("%{F4}")  # ALT+F4

答案 1 :(得分:0)

可以通过将密钥放入数组来发送密钥组合。

text_field.send_keys [ :shift, 'a']

将“A”放入text_field。在您的示例中,

wsh1.send_keys [ :control, 'c']

应该有用。