Сообщение MsgBox
Подскажите, как вывести сообщение MsgBox в несколько строчек?
Код:
@echo off &chcp 1251 >nul
echo WScript.Quit(MsgBox(WScript.Arguments(0),vbYesNo+vbDefaultButton2,WScript.Arguments(1)))>"%temp%\MsgBox.vbs"
WScript "%temp%\MsgBox.vbs" "Для успешной работы скрипта необходимо закрыть Word" "Внимание!"
If %ERRORLEVEL% equ 6 (chcp 866 >nul &echo Word закрыт.) else (
chcp 866 >nul &echo Word не закрыт.)
del /q "%temp%\MsgBox.vbs"
pause>nul
п.с. Поправьте меня, если есть ошибки в написании скрипта :)
|
Цитата:
Цитата sov44
как вывести сообщение MsgBox в несколько строчек »
|
Так?
Код:
@echo off &chcp 1251 >nul
echo WScript.Quit(MsgBox(WScript.Arguments(1) ^& Chr(13) ^& WScript.Arguments(2) ^& Chr(13) ^& WScript.Arguments(3), vbYesNo+vbDefaultButton2,WScript.Arguments(0)))>"%temp%\MsgBox.vbs"
WScript "%temp%\MsgBox.vbs" "Внимание!" "Для успешной работы скрипта необходимо закрыть Word" "Вторая строка" "Третья строка"
If %ERRORLEVEL% equ 6 (chcp 866 >nul &echo Word закрыт.) else (
chcp 866 >nul &echo Word не закрыт.)
del /q "%temp%\MsgBox.vbs"
pause>nul
|
Я предпочитаю не «Chr(13)», а константу, причём родного стандарта — «vbCrLf».
|
Тема по-сути решена, однако возникла ошибка при интеграции сообщения в скрипт. Не могу понять, где ошибка
Код:
@Echo Off
SetLocal enabledelayedexpansion
set iSumT=0
set "dr=%USERPROFILE%\Recent"& call :Calc "%dr%" lnk
set "dr=%USERPROFILE%\Application Data\Microsoft\Office\Последние файлы"& call :Calc "%dr%" lnk
set "dr=%USERPROFILE%\Local Settings\Temporary Internet Files\Content.MSO"& call :Calc "%dr%" *
set "dr=%USERPROFILE%\Local Settings\Temporary Internet Files\Content.Word"& call :Calc "%dr%" *
pause>nul
:Calc
for /f "delims=*" %%i in ('dir /b/a-d "%dr%\*.%2" 2^>nul') do (
set "bg=%%i"
if "!bg:~0,1!"=="~" (
echo WScript.Quit(MsgBox(WScript.Arguments(1) ^& Chr(13) ^& WScript.Arguments(2) ^& Chr(13) ^& WScript.Arguments(3) ^& Chr(13) ^& WScript.Arguments(4), vbYesNo+vbDefaultButton1,WScript.Arguments(0)))>"%temp%\MsgBox.vbs"
WScript "%temp%\MsgBox.vbs" "Внимание!" " Для успешной работы скрипта" "необходимо закрыть документы Word" "" " Документы закрыты?"
If %ERRORLEVEL% equ 6 (Echo %%i &pause) else (Goto :Calc)
del /q "%temp%\MsgBox.vbs"
) else (
for %%a in ("%dr%\!bg!") do (
set /a iSumT += %%~za
del /f/q %%a
)))
|
sov44, поправил две строки, в остальном ковыряться не стал
Код:
>"%temp%\MsgBox.vbs" echo WScript.Quit^(MsgBox^(WScript.Arguments^(1^) ^& vbCrLf ^& WScript.Arguments^(2^) ^& vbCrLf ^& vbCrLf ^& WScript.Arguments^(3^), vbYesNo+vbDefaultButton1,WScript.Arguments^(0^)^)^)
WScript "%temp%\MsgBox.vbs" "Внимание" " Для успешной работы скрипта" "необходимо закрыть документы Word" " Документы закрыты?"
|
Подскажите пожалуйста, как сделать чтобы выводилось сообщение, если например папка С:\1\ пуста, если нет - выполнялась след. команда?
|
Подскажите, можно-ли установить координаты расположения окна msgbox на рабочем столе, как сделать автозакрытие окна.
Код:
'MsgBox "text ", vbOKOnly + vbExclamation, "test"
Нужно для батника.
|
Цитата:
Цитата sov44
можно-ли установить координаты расположения окна msgbox на рабочем столе »
|
Нет. См. ниже другой вариант.
Цитата:
Цитата sov44
как сделать автозакрытие окна. »
|
Смотрите, пробуйте, выбирайте:
Код:
Option Explicit
InputBox "Скрипт-кодинг!", "Привет", "", 7500, 7500 ' in twips; as 500x500 px
With WScript.CreateObject("WScript.Shell")
.Popup "Скрипт-кодинг!", 5, "Привет", , vbOKOnly + vbInformation
End With
' http://forum.script-coding.com/viewtopic.php?id=218
With WScript.CreateObject("Internet.HHCtrl")
.TextPopup "Привет" & vbCrLf & "Скрипт-кодинг!", "Verdana,8", 6, 6, 6, 6
WScript.Sleep 5000
End With
WScript.Quit 0
«Nircmdc.exe trayballoon …»?!
Или:
Код:
msg.exe 0 /time:5 "Привет, Скрипт-кодинг!"
|
Подскажите, как избавится от мелькания в панели быстрого запуска значка  при запуске vbs
Код:
wscript.createobject("wscript.shell").popup replace(wscript.arguments(0),"\n",vbCrLf), 6, wscript.arguments(1), vbokonly + vbinformation
батником
Код:
@echo off
cscript //nologo "%~dp0msg.vbs" "текст 1 \n Текст 2" "шапка"
|
Цитата:
Цитата sov44
в панели быстрого запуска »
|
Где?! Может быть, на панели задач?
Метод .Popup() создаёт видимое окно, и пока оно будет отображаться — на панели задач будет окно приложения.
|
Цитата:
Цитата sov44
А можно сделать так, чтобы отображался свой значок? »
|
Для приведённого кода — нет.
Цитата:
Цитата sov44
Не хочется делать exe для выполнения тривиальной задачи вывода сообщения. »
|
Можете взять один из десятков готовых. Тот же msg.exe, тот же nircmd.exe, тот же WinMsg.exe из комплекта Bill Stewart's Site - Windows Admin Script Tools и т.п. А можете написать свой, бо компиляторы .Net VB и C идут в комплекте поставки ОС, начиная с XP.
Я вообще не вижу смысла заморачиваться такими мелочами. Чем Вам значок не угодил?
|
Можно-ли создать сообщение с задержкой, по аналогии popup, но без кнопок? Аналог этого:
Код:
cscript //nologo "%~dp0msg1.vbs" "текст1 \n текст2" "шапка"
msg1.vbs
Код:
wscript.createobject("wscript.shell").popup replace(wscript.arguments(0),"\n",vbCrLf), 6, wscript.arguments(1), vbokonly + vbinformation
|
sov44, на WSH без кнопок — нет: MessageBox function (Windows) всегда будет содержать хотя бы одну кнопку. Напрямую, разумеется — варианты с сабклассингом мы не рассматриваем, не тот уровень.
Вы хотите что-то наподобие всплывающего уведомления? Так nircmd.exe же — команда trayballoon:
Код:
"C:\Program Files (x86)\NirSoft\x64\nircmd.exe" trayballoon "шапка" "текст1~nтекст2" "shell32.dll,-154" 10000

|
Цитата:
Цитата Iska
Вы хотите что-то наподобие всплывающего уведомления? »
|
Хотелось-бы... Вариант с треем тоже не плох, подумаю над этим.
|
Немного не в тему, но всё же написал батник с js. Достоинство: не делается дополнительный файл по сравнению с vbs. В js использую Popup, в аргументах конфигурация кнопок, время ожидания, строки сообщения. В %ErrorLevel% батнику передаётся инфа о том, какая кнопка нажата.
Гибрид bat и js
Код:
@set @E=1; /*
@Echo Off
cls
Set Msg="Варкалось." "Хливкие шорьки" "Пырялись по наве"
cscript //NoLogo /E:jscript "%~dpnx0" 65 5 %Msg%
Echo %ErrorLevel%
pause
GoTo :Eof
*/
// Первый аргумент oArg(0) -способ использования Popup
// Второй аргумент oArg(1) -время ожидания сек
// Остальные - строки сообщения
// Возвращает %ErrorLevel% в соответствии с нажатием клавиши Popup
var Out=-222;
var oArg = WScript.Arguments;
var NCount=oArg.Count()-1;
var i, j, w, Msg;
if (NCount>0) {
var WshS = WScript.CreateObject("WScript.Shell");
Msg = "";
for (i=2; i<=NCount; i++) {
if (i != 1) Msg+="\n";
Msg+=oArg(i);
}
Out=WshS.Popup(Msg,oArg(1),"",oArg(0));
}
WScript.Quit(Out);
Спасибо Serguei Kouzmine в теме
|
Время: 17:00.
© OSzone.net 2001-