มีวิธีการแสดงกล่องข้อความจากแฟ้มแบตช์ (คล้ายกับวิธีการxmessage
ใช้จาก bash-script ใน Linux)?
มีวิธีการแสดงกล่องข้อความจากแฟ้มแบตช์ (คล้ายกับวิธีการxmessage
ใช้จาก bash-script ใน Linux)?
คำตอบ:
ฉันจะสร้างไฟล์ VBScript ที่ง่ายมากและเรียกมันโดยใช้ CScript เพื่อแยกพารามิเตอร์บรรทัดคำสั่ง
บางอย่างเช่นที่บันทึกไว้ในMessageBox.vbs
:
Set objArgs = WScript.Arguments
messageText = objArgs(0)
MsgBox messageText
ซึ่งคุณจะชอบ:
cscript MessageBox.vbs "This will be shown in a popup."
MsgBox
อ้างอิงถ้าคุณสนใจที่จะไปเส้นทางนี้
ก่อนอื่น DOS ไม่มีส่วนเกี่ยวข้องคุณอาจต้องการโซลูชันบรรทัดคำสั่งของ Windows (อีกครั้ง: ไม่มี DOS, Windows บริสุทธิ์ไม่ใช่เพียงหน้าต่าง แต่เป็นคอนโซล)
คุณสามารถใช้วิธีการ VBScript ให้โดย boflynn หรือคุณสามารถผิดพลาดการใช้งานหรือ net send
ใช้งานได้กับ Windows รุ่นเก่าเท่านั้น:msg
net send
net send localhost Some message to display
สิ่งนี้ขึ้นอยู่กับบริการ Messenger ที่จะใช้งาน
สำหรับรุ่นที่ใหม่กว่า (XP และใหม่กว่า):
msg "%username%" Some message to display
ควรสังเกตว่ากล่องข้อความที่ส่งโดยใช้msg.exe
จะมีอายุการใช้งาน 60 วินาทีเท่านั้น อย่างไรก็ตามสิ่งนี้สามารถแทนที่ได้ด้วย/time:xx
สวิตช์
อาจแสดงแฟลชเพียงเล็กน้อย แต่ไม่จำเป็นต้องใช้ไฟล์ชั่วคราว ควรทำงานกลับไปสู่ที่ไหนสักแห่งในยุค (IIRC) IE5
mshta javascript:alert("Message\n\nMultiple\nLines\ntoo!");close();
อย่าลืมที่จะหลีกเลี่ยงวงเล็บถ้าคุณใช้if
:
if 1 == 1 (
mshta javascript:alert^("1 is equal to 1, amazing."^);close^(^);
)
close() was unexpected at this time
แต่เมื่อฉันติดไว้ในแฟ้มชุดที่ผมได้รับข้อผิดพลาดนี้:
^
ตัวหนีในไฟล์ค้างคาว
นี่จะป็อปอัพหน้าต่างพรอมต์คำสั่งอื่น:
START CMD /C "ECHO My Popup Message && PAUSE"
start cmd /c "@echo off & mode con cols=18 lines=2 & echo My Popup Message & pause>nul"
เปลี่ยนcols=18
จำนวนตัวอักษรในข้อความ + 2 และlines=2
จำนวนใดก็ตามที่มีจำนวนบรรทัดเท่ากับ + 1
cmd /k
ลอง :
Msg * "insert your message here"
หากคุณใช้คอมมิชชันของ Windows XP สิ่งนี้จะเปิดกล่องข้อความ
การเปิดหน้าต่าง cmd ใหม่ไม่ใช่สิ่งที่คุณต้องการ คุณสามารถใช้VBScriptและใช้สิ่งนี้กับไฟล์. bat ของคุณ คุณจะเปิดมันจากไฟล์ค้างคาวด้วยคำสั่งนี้:
cd C:\"location of vbscript"
สิ่งนี้ทำการเปลี่ยนแปลงไดเร็กตอรี่ command.com จะค้นหาไฟล์จากนั้นในบรรทัดถัดไป
"insert name of your vbscript here".vbs
จากนั้นคุณสร้างใหม่ เอกสารNotepadให้พิมพ์
<script type="text/vbscript">
MsgBox "your text here"
</script>
จากนั้นคุณจะบันทึกเป็นไฟล์. vbs (โดยใส่ ".vbs" ที่ท้ายชื่อไฟล์) บันทึกเป็น "All Files" ในช่องแบบเลื่อนลงใต้ชื่อไฟล์ (ดังนั้นจึงไม่บันทึกเป็น. txt ) จากนั้นคลิกบันทึก!
<script/>
แท็ก
msg *
คุณจะได้รับแจ้งให้ป้อนข้อความตามด้วย ctrl-Z คุณสามารถป้อนตัวแบ่งบรรทัดที่นี่ซึ่งจะปรากฏในข้อความของคุณ
อีกไม่กี่วิธี
1)คนที่บ้าที่สุดและแฮ็คที่สุด - มันใช้ IEXPRESS เพื่อสร้าง exe ขนาดเล็กที่จะสร้างป๊อปอัพด้วยปุ่มเดียว ( มันสามารถสร้างข้อความป๊อปอัพอีกสองประเภท ) ใช้งานได้กับทุกหน้าต่างจาก XP ขึ้นไป:
;@echo off
;setlocal
;set ppopup_executable=popupe.exe
;set "message2=click OK to continue"
;
;del /q /f %tmp%\yes >nul 2>&1
;
;copy /y "%~f0" "%temp%\popup.sed" >nul 2>&1
;(echo(FinishMessage=%message2%)>>"%temp%\popup.sed";
;(echo(TargetName=%cd%\%ppopup_executable%)>>"%temp%\popup.sed";
;(echo(FriendlyName=%message1_title%)>>"%temp%\popup.sed"
;
;iexpress /n /q /m %temp%\popup.sed
;%ppopup_executable%
;rem del /q /f %ppopup_executable% >nul 2>&1
;pause
;endlocal
;exit /b 0
[Version]
Class=IEXPRESS
SEDVersion=3
[Options]
PackagePurpose=InstallApp
ShowInstallProgramWindow=1
HideExtractAnimation=1
UseLongFileName=0
InsideCompressed=0
CAB_FixedSize=0
CAB_ResvCodeSigning=0
RebootMode=N
InstallPrompt=%InstallPrompt%
DisplayLicense=%DisplayLicense%
FinishMessage=%FinishMessage%
TargetName=%TargetName%
FriendlyName=%FriendlyName%
AppLaunched=%AppLaunched%
PostInstallCmd=%PostInstallCmd%
AdminQuietInstCmd=%AdminQuietInstCmd%
UserQuietInstCmd=%UserQuietInstCmd%
SourceFiles=SourceFiles
[SourceFiles]
SourceFiles0=C:\Windows\System32\
[SourceFiles0]
%FILE0%=
[Strings]
AppLaunched=subst.exe
PostInstallCmd=<None>
AdminQuietInstCmd=
UserQuietInstCmd=
FILE0="subst.exe"
DisplayLicense=
InstallPrompt=
2)MSHTA
การใช้ ยังทำงานได้กับทุกเครื่อง windows จาก XP และสูงกว่า (แม้ OP ไม่ต้องการภาษา "ภายนอก" JavaScript ที่นี่จะย่อเล็กสุด) ควรบันทึกเป็น.bat
:
@if (true == false) @end /*!
@echo off
mshta "about:<script src='file://%~f0'></script><script>close()</script>" %*
goto :EOF */
alert("Hello, world!");
หรือในหนึ่งบรรทัด:
mshta "about:<script>alert('Hello, world!');close()</script>"
หรือ
mshta "javascript:alert('message');close()"
หรือ
mshta.exe vbscript:Execute("msgbox ""message"",0,""title"":close")
3).bat/jscript
ไฮบริดของพารามิเตอร์นี่คือ(ควรบันทึกเป็นbat
) มันใช้จาวาสคริปต์อีกครั้งแม้จะมีคำขอ OP แต่มันก็เป็นค้างคาวจึงสามารถเรียกได้ว่าเป็นไฟล์ค้างคาวโดยไม่ต้องกังวล มันใช้POPUPซึ่งจะช่วยให้การควบคุมนิด ๆ หน่อย ๆ มากขึ้นกว่าที่เป็นที่นิยมมากขึ้นMsgBox มันใช้ WSH แต่ไม่ใช่ MSHTA เหมือนในตัวอย่างด้านบน
@if (@x)==(@y) @end /***** jscript comment ******
@echo off
cscript //E:JScript //nologo "%~f0" "%~nx0" %*
exit /b 0
@if (@x)==(@y) @end ****** end comment *********/
var wshShell = WScript.CreateObject("WScript.Shell");
var args=WScript.Arguments;
var title=args.Item(0);
var timeout=-1;
var pressed_message="button pressed";
var timeout_message="timed out";
var message="";
function printHelp() {
WScript.Echo(title + "[-title Title] [-timeout m] [-tom \"Time-out message\"] [-pbm \"Pressed button message\"] [-message \"pop-up message\"]");
}
if (WScript.Arguments.Length==1){
runPopup();
WScript.Quit(0);
}
if (args.Item(1).toLowerCase() == "-help" || args.Item(1).toLowerCase() == "-h" ) {
printHelp();
WScript.Quit(0);
}
if (WScript.Arguments.Length % 2 == 0 ) {
WScript.Echo("Illegal arguments ");
printHelp();
WScript.Quit(1);
}
for (var arg = 1 ; arg<args.Length;arg=arg+2) {
if (args.Item(arg).toLowerCase() == "-title") {
title = args.Item(arg+1);
}
if (args.Item(arg).toLowerCase() == "-timeout") {
timeout = parseInt(args.Item(arg+1));
if (isNaN(timeout)) {
timeout=-1;
}
}
if (args.Item(arg).toLowerCase() == "-tom") {
timeout_message = args.Item(arg+1);
}
if (args.Item(arg).toLowerCase() == "-pbm") {
pressed_message = args.Item(arg+1);
}
if (args.Item(arg).toLowerCase() == "-message") {
message = args.Item(arg+1);
}
}
function runPopup(){
var btn = wshShell.Popup(message, timeout, title, 0x0 + 0x10);
switch(btn) {
// button pressed.
case 1:
WScript.Echo(pressed_message);
break;
// Timed out.
case -1:
WScript.Echo(timeout_message);
break;
}
}
runPopup();
4)และjscript.net/.bat
ไฮบริดหนึ่งตัว (ควรได้รับการบันทึกเป็น.bat
) คราวนี้มันใช้.NET
และรวบรวม.exe
ไฟล์ขนาดเล็กที่สามารถลบได้:
@if (@X)==(@Y) @end /****** silent jscript comment ******
@echo off
::::::::::::::::::::::::::::::::::::
::: compile the script ::::
::::::::::::::::::::::::::::::::::::
setlocal
::if exist "%~n0.exe" goto :skip_compilation
:: searching the latest installed .net framework
for /f "tokens=* delims=" %%v in ('dir /b /s /a:d /o:-n "%SystemRoot%\Microsoft.NET\Framework\v*"') do (
if exist "%%v\jsc.exe" (
rem :: the javascript.net compiler
set "jsc=%%~dpsnfxv\jsc.exe"
goto :break_loop
)
)
echo jsc.exe not found && exit /b 0
:break_loop
call %jsc% /nologo /out:"%~n0.exe" "%~f0"
::::::::::::::::::::::::::::::::::::
::: end of compilation ::::
::::::::::::::::::::::::::::::::::::
:skip_compilation
::
::::::::::
"%~n0.exe" %*
::::::::
::
endlocal
exit /b 0
****** end of jscript comment ******/
import System;
import System.Windows;
import System.Windows.Forms
var arguments:String[] = Environment.GetCommandLineArgs();
MessageBox.Show(arguments[1],arguments[0]);
5)และในตอนท้ายการเรียกหนึ่งครั้งไปยัง powershell ที่สร้างป๊อปอัพ (สามารถเรียกได้จากบรรทัดคำสั่งหรือจากชุดงานหากติดตั้ง powershell):
powershell [Reflection.Assembly]::LoadWithPartialName("""System.Windows.Forms""");[Windows.Forms.MessageBox]::show("""Hello World""", """My PopUp Message Box""")
6)และวิธีการของ dbenham เห็นที่นี่
start "" cmd /c "echo(&echo(&echo Hello world! &echo(&pause>nul"
7 ) สำหรับการแจ้งเตือนถาดระบบคุณสามารถลองนี้ :
call SystemTrayNotification.bat -tooltip warning -time 3000 -title "Woow" -text "Boom" -icon question
วิธีนี้แบตช์ไฟล์ของคุณจะสร้างสคริปต์ VBS และแสดงป๊อปอัพ หลังจากทำงานไฟล์แบตช์จะลบไฟล์ระดับกลางนั้น
ข้อดีของการใช้ MSGBOX คือสามารถปรับแต่งได้เอง (เปลี่ยนชื่อไอคอน ฯลฯ ) ในขณะที่ MSG.exe นั้นไม่มาก
echo MSGBOX "YOUR MESSAGE" > %temp%\TEMPmessage.vbs
call %temp%\TEMPmessage.vbs
del %temp%\TEMPmessage.vbs /f /q
นี่คือตัวแปร PowerShell ที่ไม่ต้องการโหลดชุดประกอบก่อนที่จะสร้างหน้าต่างอย่างไรก็ตามมันทำงานช้าลงอย่างเห็นได้ชัด (~ + 50%) กว่าคำสั่ง PowerShell MessageBox ที่โพสต์ที่นี่โดย @npocmaka:
powershell (New-Object -ComObject Wscript.Shell).Popup("""Operation Completed""",0,"""Done""",0x0)
คุณสามารถเปลี่ยนพารามิเตอร์สุดท้ายจาก "0x0" เป็นค่าด้านล่างเพื่อแสดงไอคอนในกล่องโต้ตอบ (ดูวิธีการป๊อปอัพสำหรับการอ้างอิงเพิ่มเติม):
0x10 หยุด
0x20 เครื่องหมายคำถาม
0x30 เครื่องหมายอัศเจรีย์
0x40 เครื่องหมายข้อมูล
ที่ดัดแปลงมาจากบทความของ Microsoft TechNet PowerTip: ใช้ PowerShell เพื่อแสดง Pop-Up หน้าต่าง
echo X=MsgBox("Message Description",0+16,"Title") >msg.vbs
- คุณสามารถเขียนตัวเลขใด ๆ จาก 0,1,2,3,4 แทน 0 (ก่อนสัญลักษณ์ '+') และนี่คือความหมายของแต่ละหมายเลข:
0 = Ok Button
1 = Ok/Cancel Button
2 = Abort/Retry/Ignore button
3 = Yes/No/Cancel
4 = Yes/No
- คุณสามารถเขียนตัวเลขใด ๆ จาก 16,32,48,64 แทน 16 (หลังจากสัญลักษณ์ '+') และนี่คือความหมายของแต่ละหมายเลข:
16 – Critical Icon
32 – Warning Icon
48 – Warning Message Icon
64 – Information Icon
ข่าวสารเกี่ยวกับ * "แทรกข้อความของคุณที่นี่"
ทำงานได้ดีเพียงบันทึกเป็นไฟล์. bat ในแผ่นจดบันทึกหรือตรวจสอบให้แน่ใจว่ารูปแบบถูกตั้งค่าเป็น "ไฟล์ทั้งหมด"
msg %SESSIONNAME% msg
msg * /time:0 /w Hello everybody!
ข้อความนี้จะรอตลอดไปจนกว่าจะคลิกตกลง (จะใช้เวลาเพียงหนึ่งนาทีโดยค่าเริ่มต้น) และทำงานได้ดีใน Windows 8.1
msg * /time:0 /w <C:\Somewhere\Message.txt
โดยที่ในไฟล์เป็นข้อความปกติ (มี CrLf's)
ในการทำเช่นนี้คุณต้องมีโปรแกรมขนาดเล็กที่แสดงกล่องข้อความและเรียกใช้จากไฟล์แบตช์ของคุณ
คุณสามารถเปิดหน้าต่างคอนโซลที่แสดงพรอมต์ แต่การรับกล่องข้อความ GUI โดยใช้ cmd.exe และเพื่อน ๆ เป็นไปไม่ได้เลย AFAIK
ฉันใช้ยูทิลิตีชื่อ msgbox.exe จากที่นี่: http://www.paulsadowski.com/WSH/cmdprogs.htm
คุณสามารถเรียกใช้ฟังก์ชั่น dll จาก user32.dll ฉันคิดว่าบางสิ่งบางอย่างเช่น
Rundll32.exe user32.dll, MessageBox (0, "text", "titleText", {แฟล็กพิเศษสำหรับเช่น messagebox สูงสุด ฯลฯ })
พิมพ์จากโทรศัพท์ของฉันอย่าตัดสินฉัน ... มิฉะนั้นฉันจะเชื่อมโยงธงพิเศษ
rundll32.exe user32.dll,MessageBoxA X
แสดงกล่องข้อความด้วย X เป็นชื่อเมื่อฉันทำในกล่องเรียกใช้ ไม่ว่าฉันจะทำ X อย่างไรฉันไม่สามารถตีความมันเป็นพารามิเตอร์หลายตัวได้ ดังนั้นrundll32.exe user32.dll,MessageBoxA (0, "MyTitle", "MyText", 0)
แสดงกล่องข้อความที่มีชื่อของ(0, "MyTitle", "MyText", 0)
แต่ฉันไม่สามารถทำให้มันทำงานได้ทั้งหมดจากบรรทัดคำสั่ง - เฉพาะจากกล่อง Run ในบรรทัดคำสั่งมันไม่ทำอะไรเลย มันใช้งานได้อย่างแน่นอนจากบรรทัดคำสั่งหรือจากไฟล์แบตช์หรือจากกล่อง Run เท่านั้น
msg * /server:127.0.0.1 พิมพ์ข้อความของคุณที่นี่
where msg
C:\Windows\System32\msg.exe
ฉันคิดว่าคุณกำลังคิดnet send
แอปพลิเคชันนี้สามารถทำเช่นนั้นได้หากคุณแปลง (ตัด) ไฟล์แบตช์ของคุณเป็นไฟล์ปฏิบัติการ
กล่องข้อความง่าย ๆ
%extd% /messagebox Title Text
Error Messagebox
%extd% /messagebox Error "Error message" 16
ยกเลิกลองอีกครั้งกล่องข้อความ
%extd% /messagebox Title "Try again or Cancel" 5
4) กล่องข้อความ "ไม่ต้องถามฉันอีก"
%extd% /messageboxcheck Title Message 0 {73E8105A-7AD2-4335-B694-94F837A38E79}
ตัวเลือกที่ดีกว่า
set my_message=Hello world
&& start cmd /c "@echo off & mode con cols=15 lines=2 & echo %my_message% & pause>nul"
คำอธิบาย:
lines=
จำนวนบรรทัดบวก 1
cols=
จำนวนอักขระในข้อความบวก 3 (ต้องมีอย่างน้อย15
)
cols
รุ่นที่คำนวณอัตโนมัติ:set my_message=Hello world
&& (echo %my_message%>EMPTY_FILE123 && FOR %? IN (EMPTY_FILE123 ) DO SET strlength=%~z? && del EMPTY_FILE123 ) && start cmd /c "@echo off && mode con lines=2 cols=%strlength% && echo %my_message% && pause>nul"
start cmd /c "@echo off & mode con cols=18 lines=2 & echo My Popup Message & pause>nul"
) ของคุณไม่ได้ มัน Echos ข้อความ แต่ล้มเหลวในการกำหนดขนาดหน้าต่างกลับมาThe screen cannot be set to the number of lines and columns specified.
อย่างน้อยในของ Windows 7
x
ในไดเรกทอรีปัจจุบันหรือคุณไม่คิดว่าจะทำมันหาย
x
คำสั่งของคุณจะล้มเหลว อย่าขอบคุณฉันและโปรดแก้ไขรหัสของคุณ คุณไม่จำเป็นต้องใช้สายการบินเดียว และถ้าคุณคิดรหัสของคุณเป็นเพื่อที่ดีโปรดโพสต์ไว้ในรหัสตรวจสอบ
นี่คือแบทช์สคริปต์ของฉันที่ฉันรวบรวมไว้โดยยึดตามคำตอบที่ดีที่นี่ & ในโพสต์อื่น ๆ
คุณสามารถตั้งค่าไทม์เอาต์ของชื่อ & แม้กระทั่งสลีปเพื่อกำหนดเวลาสำหรับ & หลังสำหรับบรรทัดใหม่
ตั้งชื่อมันว่า popup.bat และใส่ไว้ในโฟลเดอร์พา ธ ของ windows เพื่อให้ทำงานได้ทั่วโลกบนพีซีของคุณ
ตัวอย่างเช่นpopup Line 1\nLine 2
จะสร้างกล่องป๊อปอัพ 2 บรรทัด (ชนิดpopup /?
สำหรับการใช้งาน)
นี่คือรหัส
<!-- : Begin CMD
@echo off
cscript //nologo "%~f0?.wsf" %*
set pop.key=[%errorlevel%]
if %pop.key% == [-1] set pop.key=TimedOut
if %pop.key% == [1] set pop.key=Ok
if %pop.key% == [2] set pop.key=Cancel
if %pop.key% == [3] set pop.key=Abort
if %pop.key% == [4] set pop.key=Retry
if %pop.key% == [5] set pop.key=Ignore
if %pop.key% == [6] set pop.key=Yes
if %pop.key% == [7] set pop.key=No
if %pop.key% == [10] set pop.key=TryAgain
if %pop.key% == [11] set pop.key=Continue
if %pop.key% == [99] set pop.key=NoWait
exit /b
-- End CMD -->
<job><script language="VBScript">
'on error resume next
q =""""
qsq =""" """
Set objArgs = WScript.Arguments
Set objShell= WScript.CreateObject("WScript.Shell")
Popup = 0
Title = "Popup"
Timeout = 0
Mode = 0
Message = ""
Sleep = 0
button = 0
If objArgs.Count = 0 Then
Usage()
ElseIf objArgs(0) = "/?" or Lcase(objArgs(0)) = "-h" or Lcase(objArgs(0)) = "--help" Then
Usage()
End If
noWait = Not wait()
For Each arg in objArgs
If (Mid(arg,1,1) = "/") and (InStr(arg,":") <> 0) Then haveSwitch = True
Next
If not haveSwitch Then
Message=joinParam("woq")
Else
For i = 0 To objArgs.Count-1
If IsSwitch(objArgs(i)) Then
S=split(objArgs(i) , ":" , 2)
select case Lcase(S(0))
case "/m","/message"
Message=S(1)
case "/tt","/title"
Title=S(1)
case "/s","/sleep"
If IsNumeric(S(1)) Then Sleep=S(1)*1000
case "/t","/time"
If IsNumeric(S(1)) Then Timeout=S(1)
case "/b","/button"
select case S(1)
case "oc", "1"
button=1
case "ari","2"
button=2
case "ync","3"
button=3
case "yn", "4"
button=4
case "rc", "5"
button=5
case "ctc","6"
button=6
case Else
button=0
end select
case "/i","/icon"
select case S(1)
case "s","x","stop","16"
Mode=16
case "?","q","question","32"
Mode=32
case "!","w","warning","exclamation","48"
Mode=48
case "i","information","info","64"
Mode=64
case Else
Mode=0
end select
end select
End If
Next
End If
Message = Replace(Message,"/\n", "°" )
Message = Replace(Message,"\n",vbCrLf)
Message = Replace(Message, "°" , "\n")
If noWait Then button=0
Wscript.Sleep(sleep)
Popup = objShell.Popup(Message, Timeout, Title, button + Mode + vbSystemModal)
Wscript.Quit Popup
Function IsSwitch(Val)
IsSwitch = False
If Mid(Val,1,1) = "/" Then
For ii = 3 To 9
If Mid(Val,ii,1) = ":" Then IsSwitch = True
Next
End If
End Function
Function joinParam(quotes)
ReDim ArgArr(objArgs.Count-1)
For i = 0 To objArgs.Count-1
If quotes = "wq" Then
ArgArr(i) = q & objArgs(i) & q
Else
ArgArr(i) = objArgs(i)
End If
Next
joinParam = Join(ArgArr)
End Function
Function wait()
wait=True
If objArgs.Named.Exists("NewProcess") Then
wait=False
Exit Function
ElseIf objArgs.Named.Exists("NW") or objArgs.Named.Exists("NoWait") Then
objShell.Exec q & WScript.FullName & qsq & WScript.ScriptFullName & q & " /NewProcess: " & joinParam("wq")
WScript.Quit 99
End If
End Function
Function Usage()
Wscript.Echo _
vbCrLf&"Usage:" _
&vbCrLf&" popup followed by your message. Example: ""popup First line\nescaped /\n\nSecond line"" " _
&vbCrLf&" To triger a new line use ""\n"" within the msg string [to escape enter ""/"" before ""\n""]" _
&vbCrLf&"" _
&vbCrLf&"Advanced user" _
&vbCrLf&" If any Switch is used then you must use the /m: switch for the message " _
&vbCrLf&" No space allowed between the switch & the value " _
&vbCrLf&" The switches are NOT case sensitive " _
&vbCrLf&"" _
&vbCrLf&" popup [/m:""*""] [/t:*] [/tt:*] [/s:*] [/nw] [/i:*]" _
&vbCrLf&"" _
&vbCrLf&" Switch | value |Description" _
&vbCrLf&" -----------------------------------------------------------------------" _
&vbCrLf&" /m: /message:| ""1 2"" |if the message have spaces you need to quote it " _
&vbCrLf&" | |" _
&vbCrLf&" /t: /time: | nn |Duration of the popup for n seconds " _
&vbCrLf&" | |<Default> untill key pressed" _
&vbCrLf&" | |" _
&vbCrLf&" /tt: /title: | ""A B"" |if the title have spaces you need to quote it " _
&vbCrLf&" | | <Default> Popup" _
&vbCrLf&" | |" _
&vbCrLf&" /s: /sleep: | nn |schedule the popup after n seconds " _
&vbCrLf&" | |" _
&vbCrLf&" /nw /NoWait | |Continue script without the user pressing ok - " _
&vbCrLf&" | | botton option will be defaulted to OK button " _
&vbCrLf&" | |" _
&vbCrLf&" /i: /icon: | ?/q |[question mark]" _
&vbCrLf&" | !/w |[exclamation (warning) mark]" _
&vbCrLf&" | i/info|[information mark]" _
&vbCrLf&" | x/stop|[stop\error mark]" _
&vbCrLf&" | n/none|<Default>" _
&vbCrLf&" | |" _
&vbCrLf&" /b: /button: | o |[OK button] <Default>" _
&vbCrLf&" | oc |[OK and Cancel buttons]" _
&vbCrLf&" | ari |[Abort, Retry, and Ignore buttons]" _
&vbCrLf&" | ync |[Yes, No, and Cancel buttons]" _
&vbCrLf&" | yn |[Yes and No buttons]" _
&vbCrLf&" | rc |[Retry and Cancel buttons]" _
&vbCrLf&" | ctc |[Cancel and Try Again and Continue buttons]" _
&vbCrLf&" ---> | ---> |The output will be saved in variable ""pop.key""" _
&vbCrLf&"" _
&vbCrLf&"Example:" _
&vbCrLf&" popup /tt:""My MessageBox"" /t:5 /m:""Line 1\nLine 2\n/\n\nLine 4""" _
&vbCrLf&"" _
&vbCrLf&" v1.9 By RDR @ 2020"
Wscript.Quit
End Function
</script></job>
มันจะต้องป๊อปอัพเท่านั้นเมื่ออยู่ใน vm ดังนั้นในทางเทคนิคควรมีรหัสบางอย่างเช่น:
if %machine_type% == virtual_machine then
echo message box code
else
continue normal installation code