تعطيل ADBLOCK

يمنع ADBlock بعض المحتوى على الموقع

ADBlock errore

إظهار مربع المنبثقة / رسالة من ملف دفعة ويندوز

StackOverflow https://stackoverflow.com/questions/774175

سؤال

هل هناك طريقة لعرض مربع رسالة من ملف دفعي (على غرار كيف xmessage يمكن استخدامها من باش النصية في لينكس)؟

المحلول

وأود أن جعل ملف 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 أن تفعله حيال ذلك، وربما كنت ترغب في حل سطر الأوامر ويندوز. (مرة أخرى: لا DOS، نقية ويندوز، ليس فقط نافذة، ولكن وحدة التحكم)

ويمكنك إما استخدام الأسلوب فبسكريبت التي تقدمها boflynn أو يمكنك استخدام نظم المعلومات الإدارية net send أو 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^(^);
)

وهذا سوف المنبثقة إطار موجه الأوامر آخر:

START CMD /C "ECHO My Popup Message && PAUSE"

وجرب:

Msg * "insert your message here" 

إذا كنت تستخدم command.com ويندوز XP، وهذا سيفتح مربع الرسالة.

وفتح نافذة كمد الجديد هو ليس تماما ما كنت طالبا، وجمع. يمكنك أيضا استخدام فبسكريبت ، واستخدام هذا مع ملف الخفافيش الخاص بك. هل فتحه من ملف الخفافيش مع هذا الأمر:

cd C:\"location of vbscript"

وهذا ما يفعله هو تغيير command.com الدليل سيتم البحث عن الملفات من ثم على السطر التالي:

"insert name of your vbscript here".vbs

وبعد ذلك قمت بإنشاء المفكرة ، اكتب في

<script type="text/vbscript">
    MsgBox "your text here"
</script>

ويمكنك بعد ذلك حفظ هذا بمثابة ملف & .vbs & (عن طريق وضع ".vbs" في نهاية اسم الملف)، باستثناء ما "كافة الملفات" في القائمة المنسدلة مربع تحت اسم الملف أسفل (لذلك لا يحفظ كما النص)، ثم انقر فوق حفظ!

وهذه الطريقة سوف الملف الدفعي إنشاء النصي VBS وتظهر المنبثقة. بعد تشغيله، سيقوم الملف الدفعي حذف هذا الملف وسيطة.

ووميزة استخدام MSGBOX هو أنه customaziable حقا (تغيير العنوان، ورمز الخ)، في حين MSG.exe ليس بنفس القدر.

echo MSGBOX "YOUR MESSAGE" > %temp%\TEMPmessage.vbs
call %temp%\TEMPmessage.vbs
del %temp%\TEMPmessage.vbs /f /q

وقليل من المزيد من الطرق.

على 1) كما geekiest وhackiest - يستخدم IExpress لإنشاء إكس الصغيرة التي من شأنها خلق المنبثقة مع زر واحد (<أ href = على "HTTP: //www.dostips. كوم / منتدى / viewtopic.php؟ و = 3 & ر = 5901 "يختلط =" نوفولو noreferrer "> فإنه يمكن إنشاء نوعين المزيد من الرسائل المنبثقة ). يعمل على كل ويندوز 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. كما يعمل على كل آلة ويندوز XP من فأكثر (على الرغم من OP لا نريد اللغات "الخارجية" تصغير جافا سكريبت هنا). يجب أن يتم حفظها كما .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 الذي يسمح قليلا مزيد من السيطرة قليلا من . ويستخدم 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 [Reflection.Assembly]::LoadWithPartialName("""System.Windows.Forms""");[Windows.Forms.MessageBox]::show("""Hello World""", """My PopUp Message Box""")

على 6) وعلى dbenham لنهج ينظر href="https://stackoverflow.com/a/12516524/388389">

start "" cmd /c "echo(&echo(&echo              Hello world!     &echo(&pause>nul"

على 7 ) للاطلاع على إخطارات علبة النظام يمكنك محاولة <لأ href = "https://github.com/npocmaka/batch.scripts/blob/master/hybrids/.net/SystemTrayNotification. الخفافيش "يختلط =" نوفولو noreferrer "> هذا :

call SystemTrayNotification.bat  -tooltip warning -time 3000 -title "Woow" -text "Boom" -icon question

إليك البديل بوويرشيل التي لا تتطلب المجالس تحميل قبل إنشاء النافذة، ومع ذلك فإنه يعمل أبطأ بشكل ملحوظ (~ + 50٪) من الأمر MESSAGEBOX بوويرشيل نشرت هناnpocmaka:

powershell (New-Object -ComObject Wscript.Shell).Popup("""Operation Completed""",0,"""Done""",0x0)

ويمكنك تغيير المعلمة الأخيرة من "0x0" لقيمة أدناه لعرض الرموز في الحوار (انظر <لأ href = "https://msdn.microsoft.com/en-us/library/x83z1d9f(v= vs.84) .ASPX "يختلط =" نوفولو noreferrer "> الطريقة قافزة للحصول على مزيد من المرجعية):

0x10 وقف
0x20 علامة استفهام
0x30 علامة التعجب
0x40 معلومات الأقسام

ومقتبس من مقالة Microsoft TechNet <لأ href = "https://blogs.technet.microsoft.com/heyscriptingguy/2014/04/04/powertip-use-powershell-to-display-pop-up-window/ "يختلط =" نوفولو noreferrer "> PowerTip: استخدام PowerShell لعرض نافذة منبثقة

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  

وMSG * "إدخال الرسالة هنا"

ويعمل بشكل جيد، تماما كما حفظ ملف .bat في المفكرة أو تأكد من تعيين تنسيق إلى "جميع الملفات"

في أجل القيام بذلك، تحتاج إلى أن يكون برنامج صغير يعرض MESSAGEBOX وتشغيل هذا من الملف الدفعي.

هل يمكن فتح إطار وحدة التحكم التي تعرض موجه الرغم من ذلك، ولكن الحصول على مربع رسالة واجهة المستخدم الرسومية باستخدام CMD.EXE والأصدقاء فقط غير ممكن، AFAIK.

وأنا استخدم أداة اسمه msgbox.exe من هنا: http://www.paulsadowski.com/WSH/cmdprogs.htm

ويمكنك استخدام Zenity . Zenity يسمح لتنفيذ مربعات الحوار في سطر الأوامر وقذيفة البرامج النصية. كما يمكن الاطلاع على مزيد من المعلومات حول ويكيبيديا .

ووهو عبر منصة: المثبت ويندوز ويندوز يمكن العثور هنا <. / P>

msg * /time:0 /w Hello everybody!

وهذه الرسالة ينتظر إلى الأبد حتى يتم النقر OK (الذي يستمر دقيقة واحدة فقط افتراضيا) ويعمل بشكل جيد في نظام التشغيل Windows 8.1

وبعد يوم @ الجواب الطير، يمكنك تحسينه مع مهلة لتظهر فقط لمدة 10 ثانية باستخدام ما يلي:

mshta "javascript:var sh=new ActiveXObject( 'WScript.Shell' ); sh.Popup( 'Message!', 10, 'Title!', 64 );close()"

هنا لمزيد من التفاصيل.

ويمكن استدعاء وظيفة دلل من user32.dll أعتقد شيء من هذا القبيل

<اقتباس فقرة>   

وRundll32.exe user32.dll، MESSAGEBOX (0، "النص"، "titleText"، {أعلام إضافية لمثل أسمى MESSAGEBOX e.t.c})

وكتابته من وجهة نظري الهاتف، لا تحكموا ... وإلا لكنت سوف تصل أعلام إضافية.

وجي اس * /server:127.0.0.1 اكتب رسالتك هنا

تستطيع أن تفعل ذلك، إذا قمت بتحويل (التفاف) ملفات الدفعة الخاصة بك إلى الملفات القابلة للتنفيذ.


<رأ> <لى>

<القوي> MESSAGEBOX بسيط

%extd% /messagebox Title Text

<رأ بدء = "2"> <لى>

على خطأ MESSAGEBOX

%extd% /messagebox  Error "Error message" 16
<لى>

إلغاء حاول مرة أخرى MESSAGEBOX

%extd% /messagebox Title "Try again or Cancel" 5

على 4) "لا تسألني مرة أخرى" MESSAGEBOX

%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"

ويحتاج فقط إلى منبثقة عندما داخل VM، لذلك من الناحية الفنية، ينبغي أن يكون هناك بعض التعليمات البرمجية مثل:

if %machine_type% == virtual_machine then
   echo message box code
else
   continue normal installation code

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow