Vbs de bazen kullanıcıya evet hayır , iptal gibi seçenekler sunmak gerekecektir , bunu da basitçe mesaj kutuları ile yapmak mümkündür , mesaj kutuları scripte esneklik kazandıracak ve kullanıcı insiyatifi
x=msgbox("Yazı buraya gelecek" ,0, "başlık")
üstteki kodu not defterine yapıştırıp bir isim verdikten sonra sonu .vbs olacak şekilde kaydeder ve çalıştırırsak aşağıdaki mesaj kutusu görüntülenecektir.
Koddaki "başlık" ve "yazı buraya gelecek" kısımlarının resimdeki yerleri açıkça belli , bunlarda istediğimiz değişikliği yapabiliriz peki kodda birde sıfır var o nedir derseniz açıklaması ve 0 yerine gelebilecek rakamlar:
0 = Açılır pencerede (Popup) , Sadece Tamam butonu yeralır
1 = Tamam ve İptal Butonları yeralır
2 = Durdur , yeniden dene Yoksay Butonları yeralır
3 = Evet , Hayır ve iptal butonları yeralır
4 = Evet ve Hayır butonları yeralır ama sağ üst köşedeki çarpı ikonu yeralmaz
5 = Yeniden dene ve iptal butonları yeralır
16 = Kritik mesaj ikonu (Üzerinde kırmızı çarpı bulunur)
32 = Uyarı mesajı ikonu (Üzerinde soru işareti bulunur)
48 = Uyarı mesajı ikonu (Üzerinde Uyarı mesaj ikonu bulunur)
64 = Uyarı mesajı ikonu (Üzerinde Bilgi mesaj ikonu bulunur)
0 = First button is default (ilk buton varsayılan)
256 = Second button is default (ikincı buton varsayılan)
512 = Third button is default (üçüncü buton varsayılan)
768 = Fourth button is default (Dördüncü buton varsayılan)
0 = Application modal (Kullanıcı mesaj kutusuna tepki verene kadar script işlem yapmaz)
4096 = System modal (Kullanıcı mesaj kutusuna tepki verene kadar hiçbir yazılım çalışmaz)
Gelin Kullanıcı tercihinin işin içinde olduğu birkaç örnek yapalım kullanıcının tercihine göre işlem yaptırmayı belkide en iyi izah edecek örnek Evet - Hayır örneğidir (Aşağıda)
result = MsgBox ("Evet veya Hayır?", vbYesNo, "Evet hayır örneği") Select Case result Case vbYes MsgBox("Evet dediniz") Case vbNo MsgBox("Hayır dediniz") End Select
Üstteki kodu not defterine yapıştırıp bir isim verelim ve sonu .vbs olacak şekilde kaydedelim çalıştırdığımızda hangi butona basarsak bize onu belirtecektir (Evet butonuna basarsak "Evet butonuna bastınız" der)
Üstteki örnekte kod en yalın hali ile nasıl çalıştığını açıklıyor, kodda MsgBox("Evet dediniz") yerine Evet dendiğinde her ne yapılmak isteniyorsa kodları konulursa evet butonu ile bu eylem gerçekleşecektir aynı şekilde , MsgBox("Hayır dediniz") yerine konacak kodlarla da kullanıcının hayır butonuna bastığında gerçekleşecek olan eylem tanımlanabilir gelin kullanıcıya not defterini açmak isteyip istemediğini soralım
result = MsgBox ("Not defterini açmak istermisiniz?", vbYesNo, "Not defteri örneği") Select Case result Case vbYes Dim oShell Set oShell = WScript.CreateObject ("WScript.Shell") oShell.run "notepad.exe" Set oShell = Nothing Case vbNo End Select
Üstteki kod çalıştırıldığında aşağıdaki gibi bir seçenek kutusu belirecektir.
Kullanıcı evet butonuna basarsa Not defteri açılacak hayır derse script tepki vermeyecektir , koda dikkat edilirse üstte de açıkladığım üzere sadece MsgBox kodlarının yerine gerçekleştirmek istediğimiz eylemlerin kodları geldi. Peki Kullanıcıya soru sorduk kullanıcı cevap vermek yerine Bilgisyarın başından kalktı gitti Bu mesaj hep oradamı kalacak mesaja süre konamazmı derseniz elbette verilebilir , mesela aşağıdaki örneğimizde kullanıcı 5 sn içinde evet veya hayır butonlarına basmaz ise script kapanacaktır.
Set WshShell = CreateObject("WScript.Shell") x = WshShell.Popup("Devam etmek istermisiniz?",5,"Sordum.net",4) If x = vbNo Then Wscript.Quit(0) If x = VbYes Then 'Your script goes here msgbox "EVET i seçtiniz!", 4096, "Yes" End If
Scriptin ikinci satırındaki 5 rakamı sn yi temsil eder bunu istediğimiz gibi arttırıp azaltabiliriz. Üstte verdiğimiz örnekleri .vbs şeklinde aşağıdaki linkten indirip test edebilirsiniz
10 Haziran 2015 tarihli başlık güncellendi
Anonim istediğin kod şu:
do
result = MsgBox ("Evet veya Hayır?", vbYesNo, "Evet hayır örneği")
Select Case result
Case vbYes
MsgBox("Evet dediniz")
Case vbNo
MsgBox("Hayır dediniz")
End Select
msgbox
Hocam mesela uyarı çıkıyor tamam diyoruz daha sonra yeni uyarı çıkıyor öyle art arda yapma şansımız var mı
Microsoft Vbscript e desteğini sonlandırdığı için olabilir.
Merhabalar, bir soru soracağım izninizle.
Mesaj kutusu türünü 4096 sayısı yapmayı denedim fakat bilgisayardaki programlar çalışmaya devam edebilitor, yenileri açılabiliyor. Bu sorun neden kaynaklanıyor? Bilgisayarım Windows 11.
Faydalı olmasını dilerim.
Güzel bir konu olmuş tamda kodalamya başlayacekken denk geldi. teşekkürler.
Eyvallah abi
Aynen bende bunu kastetmiştim , Teşekürler Tuba hanım.
@Yiğit: Ben kodları denedim bende uygulama çalıştı ama result = MsgBox satırından sonra aşağıdaki kodları kullandım
Notepad.exe orada sistemde bulunduğu için çalışır, sendeki örnekte tam yolu kullanman gerekir.
Merhabalar ben bir tool yaptım. Burada Evete basınca o toolun açılmasını, hayıra basınca kapatmak istiyorum.mevcut komutlar ile denedim ancak olmadı.