Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Сообщение MsgBox (http://forum.oszone.net/showthread.php?t=221270)

sov44 23-11-2011 11:24 1801513

Сообщение 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

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

gora 23-11-2011 11:43 1801529

Цитата:

Цитата 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


Iska 23-11-2011 13:06 1801604

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

sov44 23-11-2011 14:28 1801647

Тема по-сути решена, однако возникла ошибка при интеграции сообщения в скрипт. Не могу понять, где ошибка
Код:

@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 1801862

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 1802744

Подскажите пожалуйста, как сделать чтобы выводилось сообщение, если например папка С:\1\ пуста, если нет - выполнялась след. команда?

sov44 17-07-2014 07:13 2377414

Подскажите, можно-ли установить координаты расположения окна msgbox на рабочем столе, как сделать автозакрытие окна.
Код:

'MsgBox "text ", vbOKOnly + vbExclamation, "test"
Нужно для батника.

Iska 17-07-2014 07:49 2377422

Цитата:

Цитата 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

Цитата:

Цитата sov44
Нужно для батника. »

«Nircmdc.exe trayballoon …»?!

Или:
Код:

msg.exe 0 /time:5 "Привет, Скрипт-кодинг!"

sov44 17-04-2017 19:48 2730168

Подскажите, как избавится от мелькания в панели быстрого запуска значка при запуске 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 2730225

Цитата:

Цитата sov44
в панели быстрого запуска »

Где?! Может быть, на панели задач?

Цитата:

Цитата sov44
как избавится »

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

Iska 18-04-2017 06:32 2730240

Цитата:

Цитата sov44
А можно сделать так, чтобы отображался свой значок? »

Для приведённого кода — нет.

Цитата:

Цитата sov44
Не хочется делать exe для выполнения тривиальной задачи вывода сообщения. »

Можете взять один из десятков готовых. Тот же msg.exe, тот же nircmd.exe, тот же WinMsg.exe из комплекта Bill Stewart's Site - Windows Admin Script Tools и т.п. А можете написать свой, бо компиляторы .Net VB и C идут в комплекте поставки ОС, начиная с XP.

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

sov44 13-05-2017 09:21 2736319

Можно-ли создать сообщение с задержкой, по аналогии 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 2736329

sov44, на WSH без кнопок — нет: MessageBox function (Windows) всегда будет содержать хотя бы одну кнопку. Напрямую, разумеется — варианты с сабклассингом мы не рассматриваем, не тот уровень.

Вы хотите что-то наподобие всплывающего уведомления? Так nircmd.exe же — команда trayballoon:
Код:

"C:\Program Files (x86)\NirSoft\x64\nircmd.exe" trayballoon "шапка" "текст1~nтекст2" "shell32.dll,-154" 10000

sov44 13-05-2017 10:46 2736349

Цитата:

Цитата Iska
Вы хотите что-то наподобие всплывающего уведомления? »

Хотелось-бы... Вариант с треем тоже не плох, подумаю над этим.

megaloman 13-05-2017 22:45 2736479

Немного не в тему, но всё же написал батник с 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.

Время: 17:00.
© OSzone.net 2001-