отправка Ctrl + C с помощью sendkeys в ruby - PullRequest
2 голосов
/ 02 августа 2011

Мне нужно закрыть окно командной строки, используя функцию 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 ]

1 голос
/ 07 декабря 2016

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

wsh.SendKeys("^C")

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

SHIFT: +

CTRL: ^

ALT:%

Примеры:

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

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

wsh.SendKeys("%{F4}")  # ALT+F4
0 голосов
/ 13 августа 2011

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

text_field.send_keys [ :shift, 'a']

помещает 'A' в текстовое поле. В вашем примере

wsh1.send_keys [ :control, 'c']

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

...