# ...
word.quit
Свойства сервера автоматизации выглядят как атрибуты объекта. Их можно читать и устанавливать.
Имеется и альтернативная нотация, в которой для доступа к свойствам используется конструкция, напоминающая хэш.
player['FileName'] = 'file.wav'
name = player['FileName']
# Эквивалентно следующим предложениям:
# player.FileName = 'file.wav'
# name = player.FileName
У этой нотации есть то преимущество, что она позволяет проще осуществлять динамический доступ к свойствам, как показано в искусственном примере ниже:
puts 'Введите имя свойства'
prop = gets
puts 'Введите новое значение'
val = gets
old = obj[prop]
obj[prop] = val
puts '#{prop} было #{old}... стало #{obj[prop]}'
Но обратимся к более жизненным примерам. Следующий код получает от пользователя имя файла, передает его Microsoft Word и распечатывает файл:
require 'win32ole'
print 'Введите имя файла для распечатки: '
docfile = gets
word = WIN32OLE.new 'Word.Application'
word.visible = true
word.documents.open docfile
word.options.printBackground = false
# Можно было бы также установить свойство printBackground в true,
# но тогда пришлось бы дожидаться, пока весь файл будет
# скопирован в буфер принтера, и только потом вызывать quit...
word.activeDocument.printout
word.quit
В следующем примере проигрывается WAV-файл. Недостаток заключается в том, что в конце программы мы поставили sleep
на случайно выбранное время, а не просто дожидаемся, когда воспроизведение закончится. Предлагаем читателю устранить этот недочет в качестве упражнения.
require 'win32ole'
sound = WIN32OLE.new('MCI.MMcontrol')
wav = 'с:\windows\media\tada.wav'
sound.fileName = wav
sound.autoEnable = true
sound.command = 'Open'
sound.command = 'Play'
sleep 7
В листинге 14.2 мы просим Internet Explorer открыть диалог для ввода текста.
require 'win32ole'
def ieInputBox( msg, default )
ie = WIN32OLE.new('InternetExplorer.Application');
ie.visible = false
ie.navigate 'about:blank'
sleep 0.01 while (ie.busy)
script = ie.Document.Script;
result = script.prompt(msg,default);
ie.quit
result
end
# Главная программа...
result = ieInputBox( 'Введите свое имя',
'Дэйв Боумэн')
if result
puts result
else
puts 'Пользователь нажал Cancel'
end
В листинге 14.3 мы открываем IE в небольшом окне и выводим в него HTML-документ.
html = <<EOF
<html>
<body>
<h3>A теперь что-нибудь</h3>
<h2>совсем</h2>
<h1>другое...</h1>
</body>
</html>
EOF
ie = WIN32OLE.new('InternetExplorer.Application');
ie.left = 150
ie.top = 150
ie.height = 200
ie.width = 300