# ...

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 открыть диалог для ввода текста.

Листинг 14.2. Открытие диалога для ввода текста в браузере

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-документ.

Листинг 14.3. Для вывода в окно браузера требуется win32ole

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

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату