Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Window per vbs erzeugen

Frage Entwicklung VB for Applications

Mitglied: strzata

strzata (Level 1) - Jetzt verbinden

17.09.2010 um 23:46 Uhr, 6035 Aufrufe, 17 Kommentare

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
Mitglied: SarekHL
18.09.2010 um 07:30 Uhr
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).

Nein, das ist bei normalem VB ohne Framework genauso.
Wie hast Du das Fenster denn eingeblendet? Mit "Onload" des Hauptfensters?
Bitte warten ..
Mitglied: strzata
18.09.2010 um 09:51 Uhr
Habe alles versucht: erste Zeile im OnLoad, in einem OnCreateControl, als VB-Splash und im MyApplication_Startup. Die beste Lösung ist, ein Fenster als eigenes Programm unabhängig von meinem Hauptfenster. Und das möglichst nicht in .Net. Das Problem ist garantiert das Framework. Und es tritt nur auf, wenn der Rechner neu hochgefahren und noch nix weiter gestartet wurde. Wenn einmal ein Programm, welches das Framework braucht, gelaufen ist, geht alles bltzschnell. Binnen 1 Sekunde ist mein Fenster oben. Nach einem Neustart dagegen vergehen bis zu 10 Sekunden. Weil ich dachte, irgendwelche Hintergrundprozesse beim Startvorgang sind die Störenfriede, habe ich den Rechner 20 Minuten in Ruhe gelassen und dann erst das VB-Programm gestartet. Da hab ich wieder die 10 Sekunden warten müssen.

Ich suche nach einer Möglichkeit, ein kleines Fenster für 5 Sekunden in der Mitte des Desktops anzuzeigen und gehe jetzt alle Programmiersprachen durch (java, delphi, php, html, hta). Irgendwie muss das doch zu machen sein.

Danke für Deine Antwort und schöne Grüße
Norbert
Bitte warten ..
Mitglied: 76109
18.09.2010 um 10:34 Uhr
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:
01.
Option Explicit 
02.
 
03.
Option Explicit 
04.
 
05.
Const BoxWidth = 300 
06.
Const BoxHeight = 120 
07.
 
08.
Const FontType = "Arial" 
09.
Const FontSize = 12 
10.
 
11.
'Main Beg 
12.
 
13.
    Call HtaBox("Mein Titel", "Mein Text", 2) 
14.
 
15.
    WScript.Quit 
16.
 
17.
'Main End 
18.
 
19.
Private Sub HtaBox(ByRef Titel, ByRef Text, ByVal Wait) 
20.
    Dim Fso, Path, Msg, Shell 
21.
 
22.
    Set Fso = CreateObject("Scripting.FileSystemObject") 
23.
    Path = Fso.GetParentFolderName(WScript.ScriptFullName) & "\Msg.Hta" 
24.
    Set Msg = Fso.CreateTextFile(Path) 
25.
 
26.
    With Msg 
27.
        .WriteLine "<html><head><title>" & Titel & "</title>" 
28.
        .WriteLine "<body bgcolor='buttonface' style='font-family:" & FontType & ";font-size:" & FontSize & "px'>" 
29.
        .WriteLine "<p>" & Text & "</p>" 
30.
        .WriteLine "</body>" 
31.
        .WriteLine "<HTA:APPLICATION" 
32.
        .WriteLine "ID='objMsg'" 
33.
        .WriteLine "APPLICATIONNAME='Msg-Ausgabe'" 
34.
        .WriteLine "SCROLL='no'" 
35.
        .WriteLine "SINGLEINSTANCE='yes'>" 
36.
        .WriteLine "<SCRIPT Language='VBScript'>" 
37.
        .WriteLine "BoxLeft = (Screen.Width - " & BoxWidth & ") / 2" 
38.
        .WriteLine "BoxTop = (Screen.Height - " & BoxHeight & ") / 2" 
39.
        .WriteLine "Window.ResizeTo " & BoxWidth & ", " & BoxHeight 
40.
        .WriteLine "Window.MoveTo BoxLeft, BoxTop" 
41.
        .WriteLine "Zeit = Now + TimeSerial(0, 0, " & Wait & ")" 
42.
        .WriteLine "Do While Zeit > Now: Loop" 
43.
        .WriteLine "Close" 
44.
        .WriteLine "</SCRIPT>" 
45.
        .WriteLine "</head></html>" 
46.
        .Close 
47.
    End With 
48.
     
49.
    With CreateObject("Wscript.Shell") 
50.
        .Run Path, 1, False 
51.
        .AppActivate Titel 
52.
    End With 
53.
End Sub
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]
Bitte warten ..
Mitglied: strzata
18.09.2010 um 11:36 Uhr
Danke vielmals Dieter,
das HTA funktioniert bestens. Warum soll ich es erst von VBS schreiben lassen? Es geht doch auch, dass ich es per Hand erstelle und als hta-Datei abspeichere, oder? Dann könnte ich eine Verknüpfung dazu auf dem Desktop anlegen und dem Anwender vorgaukeln, dass er damit mein Programm startet. Und da habe ich noch zwei Probleme:
1. beim Starten des HTA blitzt kurz ein großes Fenster auf, bevor das ResizeTo und MoveTo ausgeführt wird. Das stört etwas. Man müsste das Fenster solange verstecken (bzw. erst anzeigen), bis es am richtigen Ort sitzt.
2. In dem HTA muss ich jetzt mein Hauptprogramm aufrufen (nennen wir es jetzt mal notepad.exe). Kannst Du mir sagen, wie das geht?
Das 'Do While Zeit" ist genial. Ich habe das Schliessen-Problem schon in verschiedenen Foren beschrieben. Alle haben gesagt: das geht nicht. Und siehe: es geht doch!
Gruß Norbert
Bitte warten ..
Mitglied: strzata
18.09.2010 um 11:43 Uhr
Ach ja: und das HTA sieht man nur bei freier Sicht auf den Desktop. Sind andere Fenster offen, versteckt es sich gern dahinter. Wie bekommt man es in den Vordergrund?
Bitte warten ..
Mitglied: 76109
18.09.2010 um 13:52 Uhr
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
Bitte warten ..
Mitglied: 76109
18.09.2010 um 14:41 Uhr
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.
Shell.Run "Notepad",1, False

Gruß Dieter
Bitte warten ..
Mitglied: strzata
18.09.2010 um 14:56 Uhr
Du machst Dir ja eine Mühe mit mir - vielen vielen Dank.
>>Das Hauptprogramm kannst Du im Main-Teil vor dem "Call HtaBox" per Shell.Run starten
Da war ich gerade dabei und das wird wohl auch nicht schwer. Da wurde ich wieder durch das "Aufblitzen" gestört. Das sieht wie ein DOS-Fenster aus. Könnte es sein, dass als Default CScript.exe und nicht WScript.exe eingestellt ist? Wie bekomme ich das heraus? Auf meinem Rechner könnte ich das leicht umstellen (cscript //H:wscript). Aber was mache ich mit meinen Anwendern? Wie stelle ich die um? Das Fenster könnte aber auch ein Browserfenster sein. Man kann es nicht untersuchen. Es ist im Bruchteilt einer Sekunde wieder zu.
N.
Bitte warten ..
Mitglied: 76109
18.09.2010 um 15:12 Uhr
Hallo N!

Versuchs mal mit Batch:
01.
@echo off 
02.
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
Bitte warten ..
Mitglied: strzata
18.09.2010 um 15:26 Uhr
Hab ne test.bat mit Deinen zwei Zeilen geschrieben. Wenn ich die doppelklicke, sehe ich erst kurz das DOS-Fenster, dann blitzt kurz das schon bekannte andere große Fenster auf und dann sehe ich das HTA. Das beste wäre schon, das HTA erst anzuzeigen, wenn es geschrumpft und an seinem Ort ist, also erst nach dem ResizeTo und MoveTo. Aber ich weiss nicht, wie man das machen könnte.
N.
Bitte warten ..
Mitglied: strzata
18.09.2010 um 15:38 Uhr
Also es ist definitiv das Browserfenster (IE 8), das da aufblitzt. Hab die Hintergrundfarbe in den IE-Einstellungen verschieden gesetzt und da kann man es genau sehen.
N.
Bitte warten ..
Mitglied: 76109
18.09.2010 um 15:58 Uhr
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
Bitte warten ..
Mitglied: strzata
18.09.2010 um 16:30 Uhr
Trotzdem recht vielen Dank für Alles. Hast mir sehr geholfen.
Ganz herzliche Grüße
Norbert
Bitte warten ..
Mitglied: dog
19.09.2010 um 02:48 Uhr
Nein, das ist bei normalem VB ohne Framework genauso.

Nicht mit VB6 - das ist sofort da.
Diese ewige Ladezeit beim ersten Aufruf ist tatsächlich eine Seuche von .NET, die mich auch regelmäßig ärgert.
Bitte warten ..
Mitglied: Edi.Pfisterer
19.09.2010 um 20:52 Uhr
@ didi1954 :
man lernt nie aus!!!
den Befehl with kannte ich noch nicht, auch sonst eine sehr elegante Lösung

Danke für Deinen Beitrag!
Bitte warten ..
Mitglied: 76109
19.09.2010 um 23:31 Uhr
Hallo Edi!

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

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
Bitte warten ..
Mitglied: 76109
17.01.2011 um 09:20 Uhr
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:
01.
Option Explicit 
02.
 
03.
Const BoxWidth = 300 
04.
Const BoxHeight = 120 
05.
 
06.
Const FontType = "Arial" 
07.
Const FontSize = 12 
08.
 
09.
'Main Beg 
10.
 
11.
    Call HtaBox("Mein Titel", "Mein Text", 5)  'Wait-Angabe in Sekunden 
12.
 
13.
    WScript.Quit 
14.
 
15.
'Main End 
16.
 
17.
Private Sub HtaBox(ByRef Titel, ByRef Text, ByVal Wait) 
18.
    Dim Fso, Path, Msg, Shell 
19.
 
20.
    Set Fso = CreateObject("Scripting.FileSystemObject") 
21.
    Path = Fso.GetParentFolderName(WScript.ScriptFullName) & "\Msg.Hta" 
22.
    Set Msg = Fso.CreateTextFile(Path) 
23.
 
24.
    With Msg 
25.
        .WriteLine "<html><head><title>" & Titel & "</title>" 
26.
        .WriteLine "<HTA:APPLICATION" 
27.
        .WriteLine "ID='objMsg'" 
28.
        .WriteLine "APPLICATIONNAME='Msg-Ausgabe'" 
29.
        .WriteLine "SCROLL='no'" 
30.
        .WriteLine "SINGLEINSTANCE='yes'/>" 
31.
        .WriteLine "</head>" 
32.
        .WriteLine "<SCRIPT Language='VBScript'>" 
33.
        .WriteLine "Sub Window_OnLoad" 
34.
        .WriteLine "Window.ResizeTo " & BoxWidth & ", " & BoxHeight 
35.
        .WriteLine "Window.MoveTo ((Screen.Width - " & BoxWidth & ") / 2), ((Screen.Height - " & BoxHeight & ") / 2 )" 
36.
        .WriteLine "Text.InnerHTML = ""<p>" & Text & "</p>""" 
37.
        .WriteLine "window.setInterval ""MsgClose"", " & Wait & " * 1000" 
38.
        .WriteLine "End Sub" 
39.
        .WriteLine "Sub MsgClose" 
40.
        .WriteLine "Close" 
41.
        .WriteLine "End Sub" 
42.
        .WriteLine "</SCRIPT>" 
43.
        .WriteLine "<body bgcolor='buttonface' style='font-family:" & FontType & ";font-size:" & FontSize & "px'>" 
44.
        .WriteLine "<span id='Text'></span>" 
45.
        .WriteLine "</body></html>" 
46.
        .Close 
47.
    End With 
48.
     
49.
    With CreateObject("Wscript.Shell") 
50.
        .Run Path, 1, False 
51.
        .AppActivate Titel 
52.
    End With 
53.
End Sub
Gruß Dieter
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
LAN, WAN, Wireless
Frage zum Erzeugen eines portbasiertem VLAN (7)

Frage von presto-18 zum Thema LAN, WAN, Wireless ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...