отправка ctrl+c с помощью sendkeys в ruby

Мне нужно закрыть окно командной строки с помощью функции sendkeys, но когда я использовал приведенный ниже код, он не работал, так как выполняется запуск некоторого файла bech, поэтому он не использует эти параметры ниже.

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}')

но все же он не может завершить процесс, запущенный в командной строке.

Есть ли другой способ завершить пакетный процесс, работающий в окне командной строки?


person wani    schedule 02.08.2011    source источник


Ответы (2)


Попробуй это:

wsh.SendKeys("^C")

В методе MSDN SendKeys указываются следующие символы для этих ключей:

СДВИГ: +

CTRL: ^

АЛЬТЕРНАТИВ: %

Примеры:

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

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

wsh.SendKeys("%{F4}")  # ALT+F4
person Douglas    schedule 06.12.2016

Комбинации клавиш можно отправлять, помещая ключи в массив.

text_field.send_keys [ :shift, 'a']

помещает 'A' в text_field. В вашем примере

wsh1.send_keys [ :control, 'c']

должно сработать.

person GregA100k    schedule 12.08.2011