Войти

Показать полную графическую версию : [решено] MsgBox как отобразить картинку, шрифт изменить и таймер установить


boha
29-10-2012, 14:49
Здравствуйте.
есть скрипт vbs, домен, win ХР и 7, (скрипт указан ниже)
Сам скрипт писать не умею.
Нужно сделать так, чтоб всем пришло сообщение на экран при логоне или же по другому методу. Некоторые сотрудники не выключают компьютера и логон не у всех сработает. пока у меня только метод логона.
этот скрипт выводит сообщение и хотелось бы чтоб были еще дополнительные функции. Помогите решить с этим:

1. Нужно чтоб в диалоговом окошке по мимо текста на всех следующих окошках отображался картинка (ссылку я могу указать на общий ресурс)
2. Нужно чтоб каждую окошку пользователь не мог закрыть в течении 1 минуты, после при нажатии ОК переходит на следующ. Это для того чтоб пользователь прочитал ). У меня просто текст не помещается и он состоит из 3000 символов, поэтому разделил на 3 страницы. Я не смог их поместить в одну страницу. Если есть возможность чтоб поместить 3 тыс символов в одной странице, то можно поставить лимит на окно в 5 минуты
3. Можно ли увеличить размер буквы? или жырными шрифтами.


спасибо.


Option Explicit
Dim objWMIService, objItem, colItems
Dim strComputer, strMbox
'On Error Resume Next
strMbox = "."

strMbox = MsgBox("Внимание!")
strMbox = MsgBox("Уважаемые коллеги! Сообщаем всем, что....!")
strMbox = MsgBox("Прошу учесть данную инфу...!")
If strMbox = 1 Then
strMbox ="."
End if

Iska
29-10-2012, 18:34
boha, реализовать все Ваши хотелки на WSH не реально. Поменяйте тематику на PowerShell — там можно будет реализовать на форме.

Dr.DG
29-10-2012, 22:28
boha, вот как можно управлять IE с помощью VBS. В качестве примера показываю страницу для ввода пароля. Вы можете создать свою страницу с нужным функционалом. strPassword = GetPassword("User", "Domain")

Function GetPassword(strUser, strDomain)

Dim objIE

Set objIE = CreateObject("InternetExplorer.Application")

With objIE

.AddressBar = False
.Menubar = False
.Navigate "about:blank"
.ToolBar = 0
.Resizable = False
.StatusBar = False
.Width = 340
.Height = 230
.Left = (.Document.ParentWindow.Screen.AvailWidth - .Width) \ 2
.Top = (.Document.ParentWindow.Screen.AvailHeight - .Height) \ 2

Do While .Busy
WScript.Sleep 200
Loop

.Document.title = "Logon"
.Document.body.scroll = "no"
.Document.body.innerHTML = "<font face=Arial>" & _
"<h3>Logon to " & strDomain & " domain</h3>" & _
"<table><tbody><tr><td>User name:</td><td>" & strUser & "</td></tr>" & _
"<tr><td>Password:</td><td><input type=password id=txtPassword></td></tr>" & _
"<tr><td><input type=hidden id=txtHidden value=0></td>" & _
"<td><input type=submit value=OK onClick=VBScript:txtHidden.Value=1>" & _
"</td></tr></tbody></table></font>"

.Visible = True

'wait for user input
Do While .Document.all.txtHidden.value = "0"
WScript.Sleep 200
Loop

GetPassword = .Document.all.txtPassword.value

.Quit

End With

Set objIE = Nothing

End Function

Iska
29-10-2012, 22:36
Dr.DG, Вы прочитали все пожелания автора
Нужно чтоб каждую окошку пользователь не мог закрыть »
?!

boha
30-10-2012, 07:36
Iska
а можно тогда сделать чтоб 3000 символов можно было отобразить в одной окошке?
и эту окошку пользователь не мог бы закрыть в течении 5 минут.

Iska
30-10-2012, 08:23
boha, на PowerShell, думаю, можно.

P.S. Из опыта: не читали, и читать не будут. Хоть красными буквами пишите, хоть жирными, хоть аршинными. Не будут.

boha
30-10-2012, 08:36
тема закрыта.
спасибо Iska.

Dr.DG
30-10-2012, 23:33
Вы прочитали все пожелания автора »Не понял, что мешает обрабатывать события окна браузера или после закрытия так же открывать новое окно скриптом?
Хотя зачем оно, если никто всё равно не читает... :-)

Iska
31-10-2012, 00:55
Dr.DG, ничто не мешает. Но это будет ровно такой же выверт, как и здесь: Серый форум / VBScript: «незакрываемый» MsgBox на заданное время (http://forum.script-coding.com/viewtopic.php?id=2801).

Хотя зачем оно, если никто всё равно не читает... :-) »
И я про то же. Делал. Незакрываемое, непередвигаемое, неубиваемое, поверх всех… Если не хотят читать — не заставишь. Только организационные меры. Причём, это куда более действенный способ.

boha
20-11-2012, 17:03
Я опять столкнулся с одни нюансом.
помогите решить если возможно.

ниже скрипт, я запускаю его через планировщик задании на всех пользователей.
окошко с сообщение выскакивает на монитор даже тогда, когда компьютер заблокирован.
Нужно чтоб не выходила сообщение по верх блокировки, Чтоб пользователь видел окошко только при входе в сеанс.

Option Explicit

Dim objWshShell

Dim intTime4Show ' Заданное (оно же максимально возможное) время показа сообщения
Dim intMinimumTime ' Минимальное время показа сообщения
Dim intTimeStartShowing ' Время начала показа сообщения
Dim intRetValue ' Возвращаемое значение метода .Popup


Set objWshShell = WScript.CreateObject("WScript.Shell")

intTime4Show = 60 ' Заданное время показа сообщения — 1 минута
intMinimumTime = 5 ' Минимальное время показа сообщения — 10 секунд

intTimeStartShowing = Timer ' Засекаем время

Do
' Выводим сообщение поверх всех окон [&H40000] на оставшееся на текущий момент,
' от заданного, время [intTime4Show - (Timer - intTimeStartShowing)]
intRetValue = objWshShell.Popup( _
" УВАЖАЕМЫЕ КОЛЛЕГИ!" & Chr(13) & _
"Администратор домена сообщает, что....!", _
intTime4Show - (Timer - intTimeStartShowing), _
"СЛУЖБА СООБЩАЕТ!", _
vbOKOnly + vbInformation + &H40000)

' Повторяем вывод сообщения, пока не будет выполнено одно из условий:
' 1. Истечёт отведённое время и сообщение будет закрыто по таймауту [intRetValue = -1]
' 2. Сообщение будет закрыто вручную и с момента первого показа
' сообщения до текущего момента пройдёт не менее минимального [intMinimumTime]
' времени [(Timer - intTimeStartShowing) > intMinimumTime]
Loop Until intRetValue = -1 Or (Timer - intTimeStartShowing) > intMinimumTime

Set objWshShell = Nothing

WScript.Quit 0

Iska
20-11-2012, 18:07
я запускаю его через планировщик задании на всех пользователей. »
Как именно? Приведите подробности созданного задания.

boha
21-11-2012, 07:15
Цитата boha:
я запускаю его через планировщик задании на всех пользователей. »
Как именно? Приведите подробности созданного задания. »
В гурпповой политике домена создал политику для пользователей "user configuration\ preferences\ control panel settings\scheduled Tasks"
чтоб у них создавался планировщик на определенное время и запускал скрипт с общедоступной папки контроллера домена "\\domain\SYSVOL\scripts"

boha
22-11-2012, 11:33
не кто не знает как решить?

Iska
22-11-2012, 15:14
boha, задайте тот же вопрос (http://forum.oszone.net/post-2029034.html#post2029034) в разделе по Windows Server 2008/2008 R2. Добавьте к вопросу детали отсюда (http://forum.oszone.net/post-2029385.html#post2029385). У меня нет в наличии домена этого уровня.

boha
07-12-2012, 17:05
boha, задайте тот же вопрос в разделе по Windows Server 2008/2008 R2. Добавьте к вопросу детали отсюда. »
Все решили, помог один спец у нас. )
Проблема была в скрипте, в коде vbOKOnly + vbInformation + &H40000) нужно было поменять на 4096

Iska
07-12-2012, 17:14
Перевожу на общечеловеческий: задали «MB_SYSTEMMODAL» вместо «MB_TOPMOST»: MessageBox function (Windows) (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx).




© OSzone.net 2001-2012