Как я могу показать окно сообщения с двумя кнопками? - PullRequest
15 голосов
/ 17 июня 2010

Как отобразить окно сообщения с двумя кнопками (например: "on", "off")?

Ответы [ 7 ]

22 голосов
/ 17 июня 2010

Вы, вероятно, хотите сделать что-то вроде этого:

result = MsgBox ("Yes or No?", vbYesNo, "Yes No Example")

Select Case result
Case vbYes
    MsgBox("You chose Yes")
Case vbNo
    MsgBox("You chose No")
End Select

Чтобы добавить значок:

result = MsgBox ("Yes or No?", vbYesNo + vbQuestion, "Yes No Example")

Другие параметры значка:

vbCritical or vbExclamation
4 голосов
/ 17 июня 2010

Окно сообщений VBScript довольно ограничено в отношении ярлыков, которые вы можете применить к кнопкам, ваш выбор в значительной степени ограничен:

  • OK
  • Отмена
  • Повторить
  • Прервать
  • Игнорировать
  • Да
  • Нет

Итак, вы собираетесьвам нужно создать свою собственную форму, если вы хотите "ON" / "OFF"

Еще лучше, почему бы не перефразировать подсказку в поле, чтобы сработал один из вышеперечисленных вариантов.

Например:

Do you want the light on? 
[Yes] [No]

И ради Бога не не делайте одно из этих чудовищ пользовательского интерфейса!

Switch setting? (Click "yes" for ON and "No" for Off)
[Yes] [No]
0 голосов
/ 18 октября 2018
msgbox ("Message goes here",0+16,"Title goes here")

если пользователь должен принять решение, переменная может быть добавлена ​​следующим образом.

variable=msgbox ("Message goes here",0+16,"Title goes here")

Числа в середине изменяют внешний вид окна сообщения. Вот список

0 - только кнопка ОК

1 - окей и отмени

2 - прервать, повторить и игнорировать

3 - да нет и отмена

4 - да и нет

5 - повторить попытку и отменить

ИЗМЕНИТЬ СИМВОЛ (ПРАВИЛЬНЫЙ НОМЕР)

16 - значок критического сообщения

32 - значок предупреждения

48 - предупреждающее сообщение

64 - информационное сообщение

КНОПКА ПО УМОЛЧАНИЮ

0 = vbDefaultButton1 - первая кнопка по умолчанию

256 = vbDefaultButton2 - вторая кнопка по умолчанию

512 = vbDefaultButton3 - третья кнопка по умолчанию

768 = vbDefaultButton4 - четвертая кнопка по умолчанию

СИСТЕМА МОДАЛЬНАЯ

4096 = Модальное состояние системы, оповещение будет отображаться поверх всех приложений

Примечание: есть несколько дополнительных номеров. Вы просто должны добавить их к номерам, уже там, как

msgbox("Hello World", 0+16+0+4096)

от https://www.instructables.com/id/The-Ultimate-VBS-Tutorial/

0 голосов
/ 16 октября 2017

Я сделал

msgbox "TEXT HERE",3,"TITLE HERE"
If Yes=true then
(result)

else
msgbox "Closing..."
0 голосов
/ 04 декабря 2014

Это можно сделать, я нашел это в другом месте в Интернете ... это не моя работа!:)

    Option Explicit
' Import
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long

Private Declare Function SetDlgItemText Lib "user32" _
    Alias "SetDlgItemTextA" _
    (ByVal hDlg As Long, _
     ByVal nIDDlgItem As Long, _
     ByVal lpString As String) As Long

Private Declare Function SetWindowsHookEx Lib "user32" _
    Alias "SetWindowsHookExA" _
    (ByVal idHook As Long, _
     ByVal lpfn As Long, _
     ByVal hmod As Long, _
     ByVal dwThreadId As Long) As Long

Private Declare Function UnhookWindowsHookEx Lib "user32" _
    (ByVal hHook As Long) As Long

' Handle to the Hook procedure
Private hHook As Long

' Hook type
Private Const WH_CBT = 5
Private Const HCBT_ACTIVATE = 5

' Constants
Public Const IDOK = 1
Public Const IDCANCEL = 2
Public Const IDABORT = 3
Public Const IDRETRY = 4
Public Const IDIGNORE = 5
Public Const IDYES = 6
Public Const IDNO = 7

Public Sub MsgBoxSmile()
    ' Set Hook
    hHook = SetWindowsHookEx(WH_CBT, _
                             AddressOf MsgBoxHookProc, _
                             0, _
                             GetCurrentThreadId)

    ' Run MessageBox
    MsgBox "Smiling Message Box", vbYesNo, "Message Box Hooking"
End Sub

Private Function MsgBoxHookProc(ByVal lMsg As Long, _
                                ByVal wParam As Long, _
                                ByVal lParam As Long) As Long

    If lMsg = HCBT_ACTIVATE Then
        SetDlgItemText wParam, IDYES, "Yes   :-)"
        SetDlgItemText wParam, IDNO, "No   :-("

        ' Release the Hook
        UnhookWindowsHookEx hHook
    End If

    MsgBoxHookProc = False
End Function
0 голосов
/ 14 ноября 2012

Помните - если вы установите кнопки на vbOkOnly - он будет всегда возвращать 1.

Таким образом, вы не можете решить, нажал ли пользователь кнопку закрытия или кнопку OK,Вам просто нужно добавить опцию vbOk.

0 голосов
/ 17 июня 2010

Не может быть сделано. Кнопки MsgBox могут иметь только определенные значения.
Для этого вам нужно будет подать собственную форму.

Чтобы создать MsgBox с двумя вариантами (Да / Нет):

MsgBox("Some Text", vbYesNo)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...