Показать полную графическую версию : [решено] Сообщение 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
п.с. Поправьте меня, если есть ошибки в написании скрипта :)
как вывести сообщение 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" " Документы закрыты?"
AlexVong
24-11-2011, 23:33
Подскажите пожалуйста, как сделать чтобы выводилось сообщение, если например папка С:\1\ пуста, если нет - выполнялась след. команда?
Подскажите, можно-ли установить координаты расположения окна msgbox на рабочем столе, как сделать автозакрытие окна. 'MsgBox "text ", vbOKOnly + vbExclamation, "test"
Нужно для батника.
можно-ли установить координаты расположения окна msgbox на рабочем столе »
Нет. См. ниже другой вариант.
как сделать автозакрытие окна. »
Смотрите, пробуйте, выбирайте:
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 "Привет, Скрипт-кодинг!"
Подскажите, как избавится от мелькания в панели быстрого запуска значка http://i.imgur.com/rjxKIPc.png при запуске 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" "шапка"
в панели быстрого запуска »
Где?! Может быть, на панели задач?
как избавится »
Метод .Popup() создаёт видимое окно, и пока оно будет отображаться — на панели задач будет окно приложения.
А можно сделать так, чтобы отображался свой значок? »
Для приведённого кода — нет.
Не хочется делать exe для выполнения тривиальной задачи вывода сообщения. »
Можете взять один из десятков готовых. Тот же msg.exe, тот же nircmd.exe, тот же WinMsg.exe из комплекта Bill Stewart's Site - Windows Admin Script Tools (http://www.westmesatech.com/wast.html) и т.п. А можете написать свой, бо компиляторы .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) (https://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx) всегда будет содержать хотя бы одну кнопку. Напрямую, разумеется — варианты с сабклассингом мы не рассматриваем, не тот уровень.
Вы хотите что-то наподобие всплывающего уведомления? Так nircmd.exe же — команда trayballoon:
"C:\Program Files (x86)\NirSoft\x64\nircmd.exe" trayballoon "шапка" "текст1~nтекст2" "shell32.dll,-154" 10000
http://i.imgur.com/kfu6hmU.png
Вы хотите что-то наподобие всплывающего уведомления? »
Хотелось-бы... Вариант с треем тоже не плох, подумаю над этим.
megaloman
13-05-2017, 22:45
Немного не в тему, но всё же написал батник с js. Достоинство: не делается дополнительный файл по сравнению с vbs. В js использую Popup, в аргументах конфигурация кнопок, время ожидания, строки сообщения. В %ErrorLevel% батнику передаётся инфа о том, какая кнопка нажата.@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 в теме (http://forum.oszone.net/post-2728215.html#post2728215)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.