Comment afficher une boîte de message avec deux boutons (Par exemple: "on"
, "off"
)?
Vous voulez probablement faire quelque chose comme ça:
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
Pour ajouter une icône:
result = MsgBox ("Yes or No?", vbYesNo + vbQuestion, "Yes No Example")
Autres options d'icône:
vbCritical or vbExclamation
Le VBScript Messagebox est assez limité en ce qui concerne les étiquettes que vous pouvez appliquer aux boutons, vos choix se limitent à:
Donc, vous allez devoir créer votre propre formulaire si vous voulez "ON"/"OFF"
Mieux encore, pourquoi ne pas reformuler l’invite dans la zone pour que l’une des options ci-dessus fonctionne.
Par exemple:
Do you want the light on?
[Yes] [No]
Et pour l'amour de Dieu , ne faites pas l'une de ces monstruosités de l'interface utilisateur!
Switch setting? (Click "yes" for ON and "No" for Off)
[Yes] [No]
Rappelez-vous - si vous définissez les boutons sur vbOkOnly
- il retournera toujours retournera 1.
Vous ne pouvez donc pas décider si un utilisateur a cliqué sur le bouton Fermer ou sur le bouton OK. Vous devez simplement ajouter une option vbOk
.
C'est faisable, je l'ai trouvé ailleurs sur le web ... ce n'est pas mon travail! :)
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
msgbox ("Message goes here",0+16,"Title goes here")
si l'utilisateur est supposé prendre une décision, la variable peut être ajoutée comme ceci.
variable=msgbox ("Message goes here",0+16,"Title goes here")
Les chiffres au milieu varient en fonction de l'aspect de la boîte de message . Voici la liste.
0 - bouton ok seulement
1 - ok et annuler
2 - abandonner, réessayer et ignorer
3 - oui non et annuler
4 - oui et non
5 - réessayer et annuler
POUR CHANGER LE SYMBOLE (NUMÉRO DROIT)
16 - icône de message critique
32 - icône d'avertissement
48 - message d'avertissement
64 - message d'information
BOUTON PAR DEFAUT
0 = vbDefaultButton1 - Le premier bouton est celui par défaut
256 = vbDefaultButton2 - Le deuxième bouton est le bouton par défaut
512 = vbDefaultButton3 - Le troisième bouton est la valeur par défaut
768 = vbDefaultButton4 - Le quatrième bouton est celui par défaut
SYSTÈME MODAL
4096 = système modal, l'alerte sera au-dessus de toutes les applications
Remarque: il y a quelques numéros supplémentaires. Il suffit de les ajouter aux nombres déjà présents comme
msgbox("Hello World", 0+16+0+4096)
from https://www.instructables.com/id/The-Ultimate-VBS-Tutorial/
Ne peut être fait. Les boutons MsgBox ne peuvent avoir que des valeurs spécifiques.
.__ Vous devrez rouler votre propre formulaire pour cela.
Pour créer un MsgBox avec deux options (Oui/Non):
MsgBox("Some Text", vbYesNo)