Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Определение кода нажатия кнопки

Ответить
Настройки темы
VBS/WSH/JS - [решено] Определение кода нажатия кнопки

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Win4ester
Дата: 06-01-2015
Здравствуйте. В общем проблема такая - делаю лабу по VBS. Задание такое:
Цитата:
Вывести примерно в правом нижнем углу экрана окно для ввода текстовой строки, показать эту строку в окне сообщений с кнопками Стоп,
Повтор и Пропустить и значком Question Mark. Затем в окне сообщений показать код нажатой кнопки при выходе из предыдущего окна.
Определить коды нажатия для всех кнопок.
В VBS я дуб дубом. Первую половину я сделал (окно вывел и все показал), а вот в последней части вообще допереть не могу - как показать код, и из какого окна. Перекопал хреналлион сайтов по сабжу - нигде ничерта нет( Помогите, плиз)

Отправлено: 13:33, 06-01-2015

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Win4ester:
Первую половину я сделал (окно вывел и все показал), »
И где Ваш код?

Цитата Win4ester:
с кнопками Стоп,
Повтор и Пропустить »
Не существует такого. Есть «Abort/Retry/Ignore» из наиболее близкого.

Код: Выделить весь код
Option Explicit

Const InputBoxNearestWidthInTwips  = 5495
Const InputBoxNearestHeightInTwips = 2390

With WScript.CreateObject("htmlfile").parentWindow.screen
	MsgBox MsgBox(InputBox("Введите текстовую строку:", "Ввод текстовой строки", "Текстовая строка", (.availWidth / .deviceXDPI * 1440) - InputBoxNearestWidthInTwips, (.availHeight / .deviceYDPI * 1440) - InputBoxNearestHeightInTwips), vbAbortRetryIgnore + vbQuestion, "Окно сообщения"), vbOKOnly, "Код нажатой кнопки"
End With

WScript.Quit 0

Отправлено: 03:17, 07-01-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать



Цитата Iska:
И где Ваш код? »
Ой, пардоньте))
Цитата:
S = InputBox(vbLF & "Напишите строку текста:", _
"Окно ввода", , 20000, 12000)
Kod = MsgBox (S, vbAbortRetryIgnore+vbQuestion, _
"Окно сообщений")
Вот мой. Ваш почему-то ругается на .availWidth:
1.jpg

Отправлено: 13:47, 07-01-2015 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Win4ester:
Ваш почему-то ругается на .availWidth: »
Надо полагать, есть какие-то ограничения, связанные с безопасностью данного объекта Automation в Вашей версии ОС и/или Internet Explorer. У меня под Windows XP SP3 и IE6 отрабатывает.

Давайте попробуем так:
Код: Выделить весь код
Option Explicit

Const READYSTATE_COMPLETE = 4

Const InputBoxNearestWidthInTwips  = 5495
Const InputBoxNearestHeightInTwips = 2390


With WScript.CreateObject("InternetExplorer.Application")
	.Navigate "about:blank"
	
	Do
		WScript.Sleep 100
	Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE
	
	With .document.parentWindow.screen
		MsgBox MsgBox(InputBox("Введите текстовую строку:", "Ввод текстовой строки", "Текстовая строка", (.availWidth / .deviceXDPI * 1440) - InputBoxNearestWidthInTwips, (.availHeight / .deviceYDPI * 1440) - InputBoxNearestHeightInTwips), vbAbortRetryIgnore + vbQuestion, "Окно сообщения"), vbOKOnly, "Код нажатой кнопки"
	End With
	
	.Quit
End With

WScript.Quit 0
Кстати, проверьте — не остаётся ли после отработки этого кода «висеть» в процессах «лишний» «iexplore.exe».
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:33, 07-01-2015 | #4


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
не остаётся ли после отработки этого кода «висеть» в процессах «лишний» «iexplore.exe» »
Сейчас всё работает) Нет, iexplore не остаётся. Я так понимаю, положение окна ввода текста будет одинаковое на любом мониторе с любым разрешением?

Отправлено: 14:43, 07-01-2015 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Win4ester:
Нет, iexplore не остаётся. »
Это хорошо. А какая у Вас версия IE?

Цитата Win4ester:
Я так понимаю, положение окна ввода текста будет одинаковое на любом мониторе с любым разрешением? »
Приблизительно. Точный размер окна InputBox зависит от настроек оформления (темы), от типа и размера системного шрифта, в случае длинного текста или заголовка — ещё и от их длины, я полагаю.

А так, да:
Код: Выделить весь код
Const InputBoxNearestWidthInTwips  = 5495
Const InputBoxNearestHeightInTwips = 2390
— пересчитанные в твипы размеры окна InputBox с некоторым запасом. Положение окна по ширине:
Код: Выделить весь код
(.availWidth / .deviceXDPI * 1440) - InputBoxNearestWidthInTwips
текущий доступный размер для окна по ширине (в пикселях) делится на разрешение устройства вывода (пикселей на дюйм) и умножается на число твипов в дюйме. Из полученного значения отнимается приблизительный размер окна InputBox по ширине. Для вычисления положения окна по высоте:
Код: Выделить весь код
(.availHeight / .deviceYDPI * 1440) - InputBoxNearestHeightInTwips)
— рассуждения аналогичные.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:58, 07-01-2015 | #6


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
А какая у Вас версия IE? »
11.0.4. Спасибо огромное)
И ещё - я конечно понимаю, что наглею, но не могли бы вы помочь ещё с вот этим :
Цитата:
Задайте с помощью функции Array значения 5-ти элементам массива,
представляющим собой геометрическую прогрессию. Покажите все
данные в окне сообщений.

Отправлено: 15:05, 07-01-2015 | #7


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Win4ester:
11.0.4. »
Спасибо, ясно.

Цитата Win4ester:
с вот этим »
Код: Выделить весь код
Option Explicit

Dim arrGeometricProgression

Dim i
Dim elem


arrGeometricProgression = Array(2, 4, 8, 16, 32)

MsgBox Join(arrGeometricProgression, vbLf)

For i = LBound(arrGeometricProgression) To UBound(arrGeometricProgression)
	MsgBox arrGeometricProgression(i)
Next

For Each elem In arrGeometricProgression
	MsgBox elem
Next

WScript.Quit 0
Три способа вывода: один — все элементы в одном окне, и два варианта вывода поэлементно.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:24, 07-01-2015 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Определение кода нажатия кнопки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Включается комп без нажатия кнопки. ViRTaCe Непонятные проблемы с Железом 13 25-02-2013 14:52
Приостановка работы скрипта до нажатия кнопки в программе Pependos AutoIt 0 01-10-2010 02:52
БП и ИБП - [решено] Включение компютера, без нажатия кнопки!!! Anatoliy2004 Прочее железо 3 16-09-2009 18:13
Инициация нажатия кнопки на веб-странице ManHack Вебмастеру 1 09-03-2008 22:23
Перехват нажатия кнопки в чужом приложении SASHA 333 Программирование и базы данных 5 13-01-2005 18:31




 
Переход