Full-Screen PopUp HTA-Framework mit IFrame
Hallo zusammen,
weil es angefragt wurde, veröffentliche ich hier mal meine Version eines "Nachricht des Tages"-PopUps.
Der Code funktioniert unter Windows 10 noch immer.
Untenstehendes Script funktioniert wie folgt:
durch einen simplen Aufruf
startet das HTA, legt sich über den ganzen Bildschirm und lädt eine HTM-Datei (hier "inst-startup-mess.htm"), welche im selben Ordner, wie das Script liegt, in den IFrame).
Die entsprechende HTML-Seite hatte ich damals über Powerpoint erstellt und als HTML exportiert. Das funktionierte, wie geleckt.
Ich habe nicht getestet, ob sich auch andere Dateiformate im IFrame anzeigen lassen, aber da könnt Ihr ja mal schauen, was geht.
Hier eine Version mit aktivem Countdown und Auto-Close:
Viel Spaß und Grüße.
bdmvg
weil es angefragt wurde, veröffentliche ich hier mal meine Version eines "Nachricht des Tages"-PopUps.
Der Code funktioniert unter Windows 10 noch immer.
Untenstehendes Script funktioniert wie folgt:
durch einen simplen Aufruf
start /wait inst-startup.hta
startet das HTA, legt sich über den ganzen Bildschirm und lädt eine HTM-Datei (hier "inst-startup-mess.htm"), welche im selben Ordner, wie das Script liegt, in den IFrame).
Die entsprechende HTML-Seite hatte ich damals über Powerpoint erstellt und als HTML exportiert. Das funktionierte, wie geleckt.
Ich habe nicht getestet, ob sich auch andere Dateiformate im IFrame anzeigen lassen, aber da könnt Ihr ja mal schauen, was geht.
<html>
<HTA:APPLICATION ID = 'MyAppID'
APPLICATIONNAME = 'IT-Infobox'
Caption = 'yes'
Icon = '27knight.ico'
VERSION = '1.0'
INNERBORDER = 'yes'
MAXIMIZEBUTTON = 'yes'
MINIMIZEBUTTON = 'yes'
CONTEXTMENU = 'yes'
NAVIGABLE = 'no'
SCROLLFLAT = 'yes'
Scroll = 'no'
SELECTION = 'yes'
ShowInTaskbar = 'yes'
SINGLEINSTANCE = 'yes'
SYSMENU = 'no'
BORDER = 'yes'
BorderStyle = 'normal'
WindowState = 'normal'
>
<header>
<title>Nachricht des Tages</title>
<script language = "VBScript">
Const Dauer = "0:0:30"
Dim EndeZeit
Dim WarteCountdown
WarteCountdown = 30
Sub OnLoadHTA()
Dim mLeft
Dim mTop
Dim mWindowSizeX
Dim mWindowSizeY
mWindowSizeX = Window.Screen.Width
mWIndowSizeY = Window.Screen.Height
mLeft = window.Screen.Width / 2
mTop = window.Screen.Height / 2
mLeft = mLeft - (mWindowSizeX / 2)
mTop = mTop - (mWindowSizeY / 2)
Call window.moveTo(mLeft,mTop)
Call window.resizeTo(mWindowSizeX,mWindowSizeY)
Window.focus
EndeZeit = CDate(Now() + CDate(Dauer))
End Sub
Function ZeitAnzeige()
RestZeit = CDate(EndeZeit - Now())
If Len(Second(RestZeit)) = 1 Then
Text = Text & "0"
End If
Text = Text & Second(RestZeit)
If CDate(EndeZeit) > CDate(Now()) Then
Text = "(Dieses Fenster schließt sich in " & Text & " Sekunden automatisch.)"
End If
If not CDate(EndeZeit) > CDate(Now()) Then
window.clearInterval(YesIntervall)
self.close
End If
document.all.RestZeitAnzeige.innerHTML = Text
End Function
Sub Window_OnLoad
idTimer = window.setTimeout("PausedSection", WarteCountdown*1000, "VBScript")
End Sub
Sub PausedSection
End Sub
</script>
</header>
<body onload = OnLoadHTA>
<title></title>
<IFRAME SRC="inst-startup-mess.htm" WIDTH=100% HEIGHT=90% FRAMEBORDER=0 APPLICATION="no"></IFRAME>
<p align="center"><BUTTON onclick= 'window.close()'>Fenster schließen</BUTTON><br>
<!-- <Center id=RestZeitAnzeige style="font-family:TKTypeRegular,Verdana;"> </Center> -->
</p>
</body>
</html>
Hier eine Version mit aktivem Countdown und Auto-Close:
<html>
<HTA:APPLICATION ID = 'MyAppID'
APPLICATIONNAME = 'IT-Infobox'
Caption = 'yes'
Icon = '27knight.ico'
VERSION = '1.0'
INNERBORDER = 'yes'
MAXIMIZEBUTTON = 'yes'
MINIMIZEBUTTON = 'yes'
CONTEXTMENU = 'yes'
NAVIGABLE = 'no'
SCROLLFLAT = 'yes'
Scroll = 'no'
SELECTION = 'yes'
ShowInTaskbar = 'yes'
SINGLEINSTANCE = 'yes'
SYSMENU = 'no'
BORDER = 'yes'
BorderStyle = 'normal'
WindowState = 'normal'
>
<header>
<title>Nachricht des Tages</title> 'Fenstertitel
<script language = "VBScript">
Const Dauer = "0:0:30" 'Countdown H:M:S in Verwendung von Funktion ZeitAnzeige()
Dim EndeZeit 'Deklaration Variable EndeZeit
Dim WarteCountdown 'Deklaration Variable WarteCountdown
WarteCountdown = 30 'Admin-Einstellung: Sekunden bis Zähler auf 0 und Fenster sich schließen soll
Sub OnLoadHTA()
Dim mLeft
Dim mTop
Dim mWindowSizeX
Dim mWindowSizeY
mWindowSizeX = Window.Screen.Width 'Fensterbreite
mWIndowSizeY = Window.Screen.Height 'Fensterhöhe
mLeft = window.Screen.Width / 2
mTop = window.Screen.Height / 2
mLeft = mLeft - (mWindowSizeX / 2)
mTop = mTop - (mWindowSizeY / 2)
Call window.moveTo(mLeft,mTop) 'Fenster in Bildschirmmitte ausrichten (Linke Ecke)
Call window.resizeTo(mWindowSizeX,mWindowSizeY) 'Fenstergröße anpassen (mWindowSizeX mWindowSizeY)
Window.focus 'Fenster in Vordergrund
EndeZeit = CDate(Now() + CDate(Dauer)) 'EndeZeit = Jetzt + Dauer
Call ZeitAnzeige 'ZeitAnzeige-Funktion aufrufen
YesIntervall = window.setInterval("ZeitAnzeige",1000) 'Wiederholungsintervall für Zeitanzeigeaufruf (hier 1 Sekunde (1000 Millisekunden))
End Sub
Function ZeitAnzeige()
RestZeit = CDate(EndeZeit - Now())
'If Len(Hour(RestZeit)) = 1 Then 'Wenn "Anzahl der Stundenziffern von RestZeit=1" wahr ist
' Text = Text & "0" 'dann ergänze Variable "Text" um eine Null
'End If
'Text = Text & Hour(RestZeit) & ":" 'Ergänze Variable "Text" mit Ihrem vorhandenen Inhalt + Stunden von RestZeit + ":"
'If Len(Minute(RestZeit)) = 1 Then 'Wenn "Anzahl der Minutenziffern von RestZeit=1" wahr ist
' Text = Text & "0" 'dann ergänze Variable "Text" mit vorhandenem Inhalt + um eine Null
'End If
'Text = Text & Minute( RestZeit ) & ":" 'Ergänze Variable "Text" mit Ihrem vorhandenen Inhalt + Minuten von Restzeit + ":"
If Len(Second(RestZeit)) = 1 Then 'Wenn "Anzahl der Sekundenziffern von RestZeit=1" wahr ist
Text = Text & "0" 'dann ergänze Variable "Text" mit Ihrem vorhandenem Inhalt + um eine Null
End If
Text = Text & Second(RestZeit) 'Ergänze Variable "Text" mit ihrem vorhandenen Inhalt + Sekunden von Restzeit + ":"
If CDate(EndeZeit) > CDate(Now()) Then 'Wenn "EndeZeit > als Jetzt" wahr ist
Text = "(Dieses Fenster schließt sich in " & Text & " Sekunden automatisch.)" 'dann ergänze Variable "Text" mit ihrem vorhandenen Inhalt in dieser Form: "==> In %Inhalt von Text% startet dieser PC automatisch neu <=="
End If
If not CDate(EndeZeit) > CDate(Now()) Then 'Wenn "EndeZeit > als Jetzt" falsch ist
window.clearInterval(YesIntervall) 'dann lösche Intervall "YesIntervall"
self.close 'und schließe dieses HTA-Fenster
End If
document.all.RestZeitAnzeige.innerHTML = Text 'Übergebe Inhalt von "Text" an RestZeitAnzeige im HTML-Body.
End Function ' ZeitAnzeige() 'Funktion verlassen
Sub Window_OnLoad
idTimer = window.setTimeout("PausedSection", WarteCountdown*1000, "VBScript") 'Countdown zum Aufrufen der Prozedur "PausedSection"
End Sub
Sub PausedSection
'window.close 'Fenster schließen
End Sub
</script>
</header>
<body onload = OnLoadHTA>
<title>SAP-GUI wird installiert</title>
<IFRAME SRC="inst-startup-mess.htm" WIDTH=100% HEIGHT=90% FRAMEBORDER=0 APPLICATION="no"></IFRAME>
<p align="center"><BUTTON onclick= 'window.close()'>Fenster schließen</BUTTON><br>
<Center id=RestZeitAnzeige style="font-family:TKTypeRegular,Verdana;"> </Center>
</p>
</body>
</html>
Viel Spaß und Grüße.
bdmvg
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 589675
Url: https://administrator.de/contentid/589675
Ausgedruckt am: 21.11.2024 um 19:11 Uhr
10 Kommentare
Neuester Kommentar
Hi,
danke dafür, aber verstehe ich das richtig? Jetzt Beispiel von mir, was ich gerade ausprobiert habe:
Batch Test:
Öffnet die test.hta
test.hta:
Zeile:
Öffnet die test.htm oder html auf "C:\Users\user\Desktop\test.htm" mit Inhalt:
Weil wenn so ist, geht das bei mir nicht?
danke dafür, aber verstehe ich das richtig? Jetzt Beispiel von mir, was ich gerade ausprobiert habe:
Batch Test:
start /wait "C:\Users\user\Desktop\test.hta"
Öffnet die test.hta
test.hta:
Zeile:
<IFRAME SRC="C:\Users\user\Desktop\test.htm" WIDTH=100% HEIGHT=90% FRAMEBORDER=0 APPLICATION="no"></IFRAME>
Öffnet die test.htm oder html auf "C:\Users\user\Desktop\test.htm" mit Inhalt:
<html>
Hallo
</html>
Weil wenn so ist, geht das bei mir nicht?
Hallo,
ich habe jetzt schon für das Projekt, was ich gerade bearbeite einiges mit deinem Code anfangen können. Das Gute an deinen Code ist, dass ich fast jegliche Art von Inhalte darstellen kann.
Nun bin ich aber an einem Problem angekommen, wo ich an die Grenzen komme. Ich würde gerne ein Popup erzeugen, mit einer bestimmten Grösse. Bis hierhin ist es ja einfach. Nun soll dieses Popup aber an einer bestimmten Stelle geöffnet werden. Sprich X und Y Position Pixel, ausgegangen von der oberen linken Ecke des Popup.
Meist du das kann dein Code leisten?
ich habe jetzt schon für das Projekt, was ich gerade bearbeite einiges mit deinem Code anfangen können. Das Gute an deinen Code ist, dass ich fast jegliche Art von Inhalte darstellen kann.
Nun bin ich aber an einem Problem angekommen, wo ich an die Grenzen komme. Ich würde gerne ein Popup erzeugen, mit einer bestimmten Grösse. Bis hierhin ist es ja einfach. Nun soll dieses Popup aber an einer bestimmten Stelle geöffnet werden. Sprich X und Y Position Pixel, ausgegangen von der oberen linken Ecke des Popup.
Meist du das kann dein Code leisten?
Ja, hat super geklappt, sieht jetzt bei mir so aus:
Eine Frage hätte ich da noch, im Iframe wird dieser kleine HTML Code geladen:
Hast du eine Idee, wie die Syntax sein muss, wenn ich bei Klick auf das Bild möchte, dass sich das Popup schliesst, sprich:
oder geht das überhaupt aus dem Iframe heraus?
<header>
<title>IHRE UNTERSCHRIFT</title> 'Fenstertitel
<script language = "VBScript">
Const Dauer = "0:0:10" 'Countdown H:M:S in Verwendung von Funktion ZeitAnzeige()
Dim EndeZeit 'Deklaration Variable EndeZeit
Dim WarteCountdown 'Deklaration Variable WarteCountdown
WarteCountdown = 5 'Admin-Einstellung: Sekunden bis Zähler auf 0 und Fenster sich schliessen soll
Sub OnLoadHTA()
Dim mLeft
Dim mTop
Dim mWindowSizeX
Dim mWindowSizeY
mWindowSizeX = 1400 'Fensterbreite
mWIndowSizeY = 800 'Fensterhöhe
window.moveTo 489, 650 'Position festlegen
Call window.resizeTo(mWindowSizeX,mWindowSizeY) 'Fenstergröße anpassen (mWindowSizeX mWindowSizeY)
Window.focus 'Fenster in Vordergrund
EndeZeit = CDate(Now() + CDate(Dauer)) 'EndeZeit = Jetzt + Dauer
Call ZeitAnzeige 'ZeitAnzeige-Funktion aufrufen
YesIntervall = window.setInterval("ZeitAnzeige",1000) 'Wiederholungsintervall für Zeitanzeigeaufruf (hier 1 Sekunde (1000 Millisekunden))
End Sub
Eine Frage hätte ich da noch, im Iframe wird dieser kleine HTML Code geladen:
<html>
<p align="center"><img src="beispiel.png" width="1054" height="521" border="1" alt=""></p>
</html>
Hast du eine Idee, wie die Syntax sein muss, wenn ich bei Klick auf das Bild möchte, dass sich das Popup schliesst, sprich:
<a href="JavaScript:window.close()">Close</a>