Window per vbs erzeugen
Guten Abend,
Kann man per VisualBasicScript ein leeres kleines Windowsfenster erzeugen, welches sich nach ein paar Sekunden wieder selbst schliesst? Soll als Hinweis dienen, dass mein Programm geladen wird. So ne Art Splash. Habe es mit vb.net programmiert, aber bis es erscheint, vergeht nicht weniger Zeit als bis mein Hauptprogrammfenster zu sehen ist (im Schnitt 6 bis 10 Sekunden, scheinbar braucht das Framework so lange zum Laden). Das verleitet manche Anwender, das Icon nochmal zu klicken. Ein WScript.Echo sieht man sofort. Aber da stört der Boxtitel und der OK-Button. Gibt es da eine Möglichkeit?
Danke für eine Antwort.
Norbert
Kann man per VisualBasicScript ein leeres kleines Windowsfenster erzeugen, welches sich nach ein paar Sekunden wieder selbst schliesst? Soll als Hinweis dienen, dass mein Programm geladen wird. So ne Art Splash. Habe es mit vb.net programmiert, aber bis es erscheint, vergeht nicht weniger Zeit als bis mein Hauptprogrammfenster zu sehen ist (im Schnitt 6 bis 10 Sekunden, scheinbar braucht das Framework so lange zum Laden). Das verleitet manche Anwender, das Icon nochmal zu klicken. Ein WScript.Echo sieht man sofort. Aber da stört der Boxtitel und der OK-Button. Gibt es da eine Möglichkeit?
Danke für eine Antwort.
Norbert
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 151296
Url: https://administrator.de/contentid/151296
Ausgedruckt am: 08.11.2024 um 21:11 Uhr
17 Kommentare
Neuester Kommentar
Kann man per VisualBasicScript ein leeres kleines Windowsfenster erzeugen, welches sich nach ein paar Sekunden wieder selbst
schliesst? Soll als Hinweis dienen, dass mein Programm geladen wird. So ne Art Splash. Habe es mit vb.net programmiert, aber bis
es erscheint, vergeht nicht weniger Zeit als bis mein Hauptprogrammfenster zu sehen ist (im Schnitt 6 bis 10 Sekunden, scheinbar
braucht das Framework so lange zum Laden).
schliesst? Soll als Hinweis dienen, dass mein Programm geladen wird. So ne Art Splash. Habe es mit vb.net programmiert, aber bis
es erscheint, vergeht nicht weniger Zeit als bis mein Hauptprogrammfenster zu sehen ist (im Schnitt 6 bis 10 Sekunden, scheinbar
braucht das Framework so lange zum Laden).
Nein, das ist bei normalem VB ohne Framework genauso.
Wie hast Du das Fenster denn eingeblendet? Mit "Onload" des Hauptfensters?
Hallo strzata!
Ich habe mal versucht so eine Möglichkeit per VB- und Hta-Skript zu ermöglichen und scheint auch zu funktionieren.
Also das VB-Script erzeugt eine HTA-Datei, das nach der Erstellung gestartet wird und nach Ablauf der angegebenen Zeit in Sekunden wieder automatisch schließt, während das VB-Script ganz normal weiterläuft.
Hier ein VBS-Beispiel:
Wobei noch anzumerken ist, dass die Textanzeige nur funktioniert, wenn der Body-Teil an der aktuellen Position im Skript steht.
Gruß Dieter
[edit] Code geändert. Anstatt Time jetzt Now (Datum+Zeit) und Window "Mein Titel" mit Shell.AppActivate in den Vordergrund holen [/edit]
Ich habe mal versucht so eine Möglichkeit per VB- und Hta-Skript zu ermöglichen und scheint auch zu funktionieren.
Also das VB-Script erzeugt eine HTA-Datei, das nach der Erstellung gestartet wird und nach Ablauf der angegebenen Zeit in Sekunden wieder automatisch schließt, während das VB-Script ganz normal weiterläuft.
Hier ein VBS-Beispiel:
Option Explicit
Option Explicit
Const BoxWidth = 300
Const BoxHeight = 120
Const FontType = "Arial"
Const FontSize = 12
'Main Beg
Call HtaBox("Mein Titel", "Mein Text", 2)
WScript.Quit
'Main End
Private Sub HtaBox(ByRef Titel, ByRef Text, ByVal Wait)
Dim Fso, Path, Msg, Shell
Set Fso = CreateObject("Scripting.FileSystemObject")
Path = Fso.GetParentFolderName(WScript.ScriptFullName) & "\Msg.Hta"
Set Msg = Fso.CreateTextFile(Path)
With Msg
.WriteLine "<html><head><title>" & Titel & "</title>"
.WriteLine "<body bgcolor='buttonface' style='font-family:" & FontType & ";font-size:" & FontSize & "px'>"
.WriteLine "<p>" & Text & "</p>"
.WriteLine "</body>"
.WriteLine "<HTA:APPLICATION"
.WriteLine "ID='objMsg'"
.WriteLine "APPLICATIONNAME='Msg-Ausgabe'"
.WriteLine "SCROLL='no'"
.WriteLine "SINGLEINSTANCE='yes'>"
.WriteLine "<SCRIPT Language='VBScript'>"
.WriteLine "BoxLeft = (Screen.Width - " & BoxWidth & ") / 2"
.WriteLine "BoxTop = (Screen.Height - " & BoxHeight & ") / 2"
.WriteLine "Window.ResizeTo " & BoxWidth & ", " & BoxHeight
.WriteLine "Window.MoveTo BoxLeft, BoxTop"
.WriteLine "Zeit = Now + TimeSerial(0, 0, " & Wait & ")"
.WriteLine "Do While Zeit > Now: Loop"
.WriteLine "Close"
.WriteLine "</SCRIPT>"
.WriteLine "</head></html>"
.Close
End With
With CreateObject("Wscript.Shell")
.Run Path, 1, False
.AppActivate Titel
End With
End Sub
Gruß Dieter
[edit] Code geändert. Anstatt Time jetzt Now (Datum+Zeit) und Window "Mein Titel" mit Shell.AppActivate in den Vordergrund holen [/edit]
Hallo Norbert!
Das Fenster in den Vordergrund holen, sollte per Codezeile 51 möglich sein (Code geändert).
Zu dem anderen Effekt "blitzt kurz ein großes Fenster auf" habe ich im Moment keine Idee. Bei mir tritt dieser Effekt nicht auf.
Gruß Dieter
Das Fenster in den Vordergrund holen, sollte per Codezeile 51 möglich sein (Code geändert).
Zu dem anderen Effekt "blitzt kurz ein großes Fenster auf" habe ich im Moment keine Idee. Bei mir tritt dieser Effekt nicht auf.
Gruß Dieter
Hallo nochmal!
Mir ist gerade eingefallen, dass Du doch ein VB- und HTA-Skript brauchst, sonst funktioniert das Ganze ja nicht, weil Du ja dann in der Loop-Schleife hängen bleibst und keine nachfolgenden Anweisungen ausgeführt werden (starten, aktivieren....).
Das Hauptprogramm kannst Du im Main-Teil vor dem "Call HtaBox" per Shell.Run starten z.B.
Gruß Dieter
Mir ist gerade eingefallen, dass Du doch ein VB- und HTA-Skript brauchst, sonst funktioniert das Ganze ja nicht, weil Du ja dann in der Loop-Schleife hängen bleibst und keine nachfolgenden Anweisungen ausgeführt werden (starten, aktivieren....).
Das Hauptprogramm kannst Du im Main-Teil vor dem "Call HtaBox" per Shell.Run starten z.B.
Shell.Run "Notepad",1, False |
Gruß Dieter
Hallo N!
Versuchs mal mit Batch:
Gruß Dieter
PS. Das war natürlich Quatsch mit Soße. Keine Ahnung, was ich da wieder gedacht habe. Kein Plan
Versuchs mal mit Batch:
@echo off
WScript //nologo Test.vbs
Gruß Dieter
PS. Das war natürlich Quatsch mit Soße. Keine Ahnung, was ich da wieder gedacht habe. Kein Plan
Hallo N!
Sorry, wie bereits erwähnt, tritt der Effekt bei mir nicht auf (Rechner wahrscheinlich zu schnell) und habe auch leider keine Idee, wie man das verhindern kann.
Gruß Dieter
Sorry, wie bereits erwähnt, tritt der Effekt bei mir nicht auf (Rechner wahrscheinlich zu schnell) und habe auch leider keine Idee, wie man das verhindern kann.
Gruß Dieter
Hallo Edi!
Hier noch die Definition dazu:
Mit der With-Anweisung können Sie ein Objekt oder einen benutzerdefinierten Typ einmal für eine ganze Folge von Anweisungen festlegen. With-Anweisungen beschleunigen die Ausführung von Prozeduren und reduzieren wiederholte Eingaben.
Gruß Dieter
Zitat von @Edi.Pfisterer:
@ didi1954 :
man lernt nie aus!!!
den Befehl with kannte ich noch nicht, auch sonst eine sehr elegante Lösung
Du bist ja auch schon längere Zeit Mitglied und kanntest die Anweisung With noch nicht. Kann ich kaum glauben@ didi1954 :
man lernt nie aus!!!
den Befehl with kannte ich noch nicht, auch sonst eine sehr elegante Lösung
Hier noch die Definition dazu:
Mit der With-Anweisung können Sie ein Objekt oder einen benutzerdefinierten Typ einmal für eine ganze Folge von Anweisungen festlegen. With-Anweisungen beschleunigen die Ausführung von Prozeduren und reduzieren wiederholte Eingaben.
Gruß Dieter
Hallo zusammen!
Das letzte Skript bringt - zumindest bei mir - in Abhängigkeit von Zeitangaben > 2 Skekunden Browser-TimeOuts. Von daher, hier eine andere Methode mit Hilfe eines Timers, der nach Ablauf der Zeit die Schließ-Routine aufruft und dadurch keine Probleme bei größeren Zeitangaben auftreten:
Gruß Dieter
Das letzte Skript bringt - zumindest bei mir - in Abhängigkeit von Zeitangaben > 2 Skekunden Browser-TimeOuts. Von daher, hier eine andere Methode mit Hilfe eines Timers, der nach Ablauf der Zeit die Schließ-Routine aufruft und dadurch keine Probleme bei größeren Zeitangaben auftreten:
Option Explicit
Const BoxWidth = 300
Const BoxHeight = 120
Const FontType = "Arial"
Const FontSize = 12
'Main Beg
Call HtaBox("Mein Titel", "Mein Text", 5) 'Wait-Angabe in Sekunden
WScript.Quit
'Main End
Private Sub HtaBox(ByRef Titel, ByRef Text, ByVal Wait)
Dim Fso, Path, Msg, Shell
Set Fso = CreateObject("Scripting.FileSystemObject")
Path = Fso.GetParentFolderName(WScript.ScriptFullName) & "\Msg.Hta"
Set Msg = Fso.CreateTextFile(Path)
With Msg
.WriteLine "<html><head><title>" & Titel & "</title>"
.WriteLine "<HTA:APPLICATION"
.WriteLine "ID='objMsg'"
.WriteLine "APPLICATIONNAME='Msg-Ausgabe'"
.WriteLine "SCROLL='no'"
.WriteLine "SINGLEINSTANCE='yes'/>"
.WriteLine "</head>"
.WriteLine "<SCRIPT Language='VBScript'>"
.WriteLine "Sub Window_OnLoad"
.WriteLine "Window.ResizeTo " & BoxWidth & ", " & BoxHeight
.WriteLine "Window.MoveTo ((Screen.Width - " & BoxWidth & ") / 2), ((Screen.Height - " & BoxHeight & ") / 2 )"
.WriteLine "Text.InnerHTML = ""<p>" & Text & "</p>"""
.WriteLine "window.setInterval ""MsgClose"", " & Wait & " * 1000"
.WriteLine "End Sub"
.WriteLine "Sub MsgClose"
.WriteLine "Close"
.WriteLine "End Sub"
.WriteLine "</SCRIPT>"
.WriteLine "<body bgcolor='buttonface' style='font-family:" & FontType & ";font-size:" & FontSize & "px'>"
.WriteLine "<span id='Text'></span>"
.WriteLine "</body></html>"
.Close
End With
With CreateObject("Wscript.Shell")
.Run Path, 1, False
.AppActivate Titel
End With
End Sub
Gruß Dieter