Войти

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


sov44
23-11-2011, 11:24
Подскажите, как вывести сообщение 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


п.с. Поправьте меня, если есть ошибки в написании скрипта :)

gora
23-11-2011, 11:43
как вывести сообщение 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

Iska
23-11-2011, 13:06
Я предпочитаю не «Chr(13)», а константу, причём родного стандарта — «vbCrLf».

sov44
23-11-2011, 14:28
Тема по-сути решена, однако возникла ошибка при интеграции сообщения в скрипт. Не могу понять, где ошибка
@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
)))

gora
23-11-2011, 18:38
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\ пуста, если нет - выполнялась след. команда?

sov44
17-07-2014, 07:13
Подскажите, можно-ли установить координаты расположения окна msgbox на рабочем столе, как сделать автозакрытие окна. 'MsgBox "text ", vbOKOnly + vbExclamation, "test"
Нужно для батника.

Iska
17-07-2014, 07:49
можно-ли установить координаты расположения окна 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 "Привет, Скрипт-кодинг!"

sov44
17-04-2017, 19:48
Подскажите, как избавится от мелькания в панели быстрого запуска значка 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" "шапка"

Iska
18-04-2017, 02:42
в панели быстрого запуска »
Где?! Может быть, на панели задач?

как избавится »
Метод .Popup() создаёт видимое окно, и пока оно будет отображаться — на панели задач будет окно приложения.

Iska
18-04-2017, 06:32
А можно сделать так, чтобы отображался свой значок? »
Для приведённого кода — нет.

Не хочется делать 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.

Я вообще не вижу смысла заморачиваться такими мелочами. Чем Вам значок не угодил?

sov44
13-05-2017, 09:21
Можно-ли создать сообщение с задержкой, по аналогии 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

Iska
13-05-2017, 10:00
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

sov44
13-05-2017, 10:46
Вы хотите что-то наподобие всплывающего уведомления? »
Хотелось-бы... Вариант с треем тоже не плох, подумаю над этим.

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