Positionieren einer MsgBox mit WSH
Hallo,
ist es möglich in VBS (WSH) eine MsgBox unten Rechts über der Taskleiste zu positionieren? Habe da was von API oder Modulen gehört, aber wirklich wie es gehen soll weiß ich leider auch nicht. Kann mir da einer helfen? Habe auch gehört das man eine Inputbox positionieren kann, dann sollte das doch auch irgendwie mit einer MsgBox möglich sein oder nicht?
Gruß,
m0nstar
ist es möglich in VBS (WSH) eine MsgBox unten Rechts über der Taskleiste zu positionieren? Habe da was von API oder Modulen gehört, aber wirklich wie es gehen soll weiß ich leider auch nicht. Kann mir da einer helfen? Habe auch gehört das man eine Inputbox positionieren kann, dann sollte das doch auch irgendwie mit einer MsgBox möglich sein oder nicht?
Gruß,
m0nstar
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 121375
Url: https://administrator.de/contentid/121375
Ausgedruckt am: 22.11.2024 um 18:11 Uhr
34 Kommentare
Neuester Kommentar
Hallo m0nstar!
Du hast richtig gehört, dass man eine Input-Box positionieren kann. Aber mit der Msg-Box geht das leider nicht.
Gruß Dieter
Du hast richtig gehört, dass man eine Input-Box positionieren kann. Aber mit der Msg-Box geht das leider nicht.
Gruß Dieter
Hallo m0nstar!
Das mit der Input-Box sollte wohl nicht funktionieren. Das widerspricht ja völlig dem Sinn der Funktion.
Und bei der VB-API sind Bibliotheksfunktionen einbezogen, die in VB-Script, meines Wissens nicht zur Verfügung stehen.
Aber eventuell hat der Kollege "bastla" eine funkende Idee
Gruß Dieter
Das mit der Input-Box sollte wohl nicht funktionieren. Das widerspricht ja völlig dem Sinn der Funktion.
Und bei der VB-API sind Bibliotheksfunktionen einbezogen, die in VB-Script, meines Wissens nicht zur Verfügung stehen.
Aber eventuell hat der Kollege "bastla" eine funkende Idee
Gruß Dieter
Hallo m0nstar!
Ja, aber leider nicht in VBS. Da musst Du schon auf eine VB-Programmierumgebung umsteigen.
Gruß Dieter
Ja, aber leider nicht in VBS. Da musst Du schon auf eine VB-Programmierumgebung umsteigen.
Gruß Dieter
Hallo nochmal!
Hier kannst Du Dir VisualStudio 2008 (ISO-File 877MB) herunterladen.
http://www.microsoft.com/express/download/
Gruß Dieter
Hier kannst Du Dir VisualStudio 2008 (ISO-File 877MB) herunterladen.
http://www.microsoft.com/express/download/
Gruß Dieter
Hallo m0nstar!
Das ist wohl war. Das hindert Dich aber nicht daran, Dir das Paket herunterzuladen, um etwas damit herum zu experimentieren.
Gruß Dieter
Das ist wohl war. Das hindert Dich aber nicht daran, Dir das Paket herunterzuladen, um etwas damit herum zu experimentieren.
Gruß Dieter
@76109
@m0nstar
Wie früher schon einmal erwähnt, hat VBS keine "Oberfläche" zu bieten - dazu müsstest Du Dich schon in Richtung "HTA" umsehen, und dann ist's zu VB auch nicht mehr so weit ...
Grüße
bastla
Aber eventuell hat der Kollege "bastla" eine funkende Idee
Leider Funkstille @m0nstar
Wie früher schon einmal erwähnt, hat VBS keine "Oberfläche" zu bieten - dazu müsstest Du Dich schon in Richtung "HTA" umsehen, und dann ist's zu VB auch nicht mehr so weit ...
Grüße
bastla
Naja, HTA währe schon eine Alternative, aber ich kriege die Positionierung nicht hin
Gruß Dieter
Gruß Dieter
@76109
Vielleicht haben ja die Scripting Guys etwas Passendes: How Can I Get an HTA to Remember Its Previous Position Onscreen?
[Edit] Noch was gefunden: http://qaix.com/javascript-web-programming/334-263-hta-launch-window-si ... und nochmals die Scripting Guys: How Can I Center an HTA on the Screen?
Kombiniert wäre das Ergebnis etwa:
[/Edit]
Grüße
bastla
Vielleicht haben ja die Scripting Guys etwas Passendes: How Can I Get an HTA to Remember Its Previous Position Onscreen?
[Edit] Noch was gefunden: http://qaix.com/javascript-web-programming/334-263-hta-launch-window-si ... und nochmals die Scripting Guys: How Can I Center an HTA on the Screen?
Kombiniert wäre das Ergebnis etwa:
<html>
<head>
<title>Centered HTA</title>
<SCRIPT Language="VBScript">
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_DesktopMonitor")
For Each objItem in colItems
intHorizontal = objItem.ScreenWidth
intVertical = objItem.ScreenHeight
Next
intLeft = (intHorizontal - 800) / 2
intTop = (intVertical - 600) / 2
window.resizeTo 800,600
window.moveTo intLeft, intTop
</SCRIPT>
<HTA:APPLICATION
ID="objHTA"
APPLICATIONNAME="Centered HTA"
SCROLL="yes"
SINGLEINSTANCE="yes"
>
</head>
<body></body>
</html>
Grüße
bastla
Hallo bastla!
Super Das habe ich gesucht:
Danke!
Gruß Dieter
Super Das habe ich gesucht:
window.moveTo |
Danke!
Gruß Dieter
Hallo m0nstar!
Zugegeben, zB dieser Artikel ist (in Google) erst an 4. Stelle gereiht gewesen - also eine etwas aufwändige Sache, ihn zu finden ...
... andererseits sollten (VB-)Scripter dieseyer.de kennen - dort findest Du diese Beschreibung (und, ganz nebenbei, auf der Startseite auch einen Link zur script56.chm = VBS-Hilfedatei in Deutsch).
Grüße
bastla
[Edit] Nur der Ordnung halber: Sogar MS hat etwas zu diesem Thema: Learn About Scripting for HTML Applications (HTAs) [/Edit]
Zugegeben, zB dieser Artikel ist (in Google) erst an 4. Stelle gereiht gewesen - also eine etwas aufwändige Sache, ihn zu finden ...
... andererseits sollten (VB-)Scripter dieseyer.de kennen - dort findest Du diese Beschreibung (und, ganz nebenbei, auf der Startseite auch einen Link zur script56.chm = VBS-Hilfedatei in Deutsch).
Grüße
bastla
[Edit] Nur der Ordnung halber: Sogar MS hat etwas zu diesem Thema: Learn About Scripting for HTML Applications (HTAs) [/Edit]
Hallo m0nstar!
Wenn Du in die rechte untere Ecke willst, sollten rechts und unten nur wenige Pixel (im Beispiel rechts 20 und unten 40) freigelassen werden, daher zB
Nur zur Sicherheit: Die Berechnung der Position beginnt links oben mit 0,0.
Grüße
bastla
blöd bin ich ja auch net
Davon wäre ich auch nicht ausgegangen - mir würde eher "bequem" einfallen ...egal was für zahlen ich bei deinem Code eingebe:
Hast Du die Artikel dazu gelesen? Es ging darum, ein Fenster in der Größe 800 x 600 (siehe die "Resize"-Anweisung) zu zentrieren, was eben dadurch erreicht wird, dass von den ermittelten Werten der Auflösung die Fenstergröße abgezogen und der Rest halbiert wird - so bleibt links und rechts bzw ober- und unterhalb gleich viel frei.Wenn Du in die rechte untere Ecke willst, sollten rechts und unten nur wenige Pixel (im Beispiel rechts 20 und unten 40) freigelassen werden, daher zB
intLeft = intHorizontal - 600 - 20
intTop = intVertical - 400 - 40
Grüße
bastla
... wenn Du auch noch Deinen aktuellen Stand des Codes posten würdest, könnte ich vielleicht sogar etwas zum Fehler sagen ...
Grüße
bastla
P.S.: Weil Du (lt Screenshot) mit "notepad" arbeitest: Sieh Dir mal zB Notepad++ an ...
Grüße
bastla
P.S.: Weil Du (lt Screenshot) mit "notepad" arbeitest: Sieh Dir mal zB Notepad++ an ...
Hallo m0nstar!
Zur Fehlermeldung: Du hattest
anstelle von
Die Positionierung funktioniert bei mir, daher solltest Du die ermittelten Werte für "intHorizontal" und "intVertical" prüfen - dazu vor Zeile 17 einfügen:
Grüße
bastla
Zur Fehlermeldung: Du hattest
window.moveTo intRight, intTop
window.moveTo intLeft, intTop
document.write intHorizontal & " x " & intVertical
Grüße
bastla
Hallo m0nstar und Hallo bastla!
So, ich habe jetzt auch mal was zusammengebastelt.
Probiers mal aus.
Wenn Dir diese Ausgabe nicht gefällt, dann ersetze die Codezeile 44 durch 43 und 47 durch 46.
Nach dem Ersetzen, kannst Du die Hintergrundfarbe mit der Konstanten BackColor festlegen.
Die anderen Konstanten musst Du ebenfalls entsprechend festlegen.
Eine HTML-Farbtabelle mit Namen, mit Hex-Werte und mit RGB-Werte sind hier zu sehen:
http://www.farb-tabelle.de/de/farbtabelle.htm
Die Abfrage für die Desktopgröße bekomme ich leider nicht anders hin
Gruß Dieter
[edit] Code geändert am 02.08.2009 [/edit]
So, ich habe jetzt auch mal was zusammengebastelt.
Probiers mal aus.
Wenn Dir diese Ausgabe nicht gefällt, dann ersetze die Codezeile 44 durch 43 und 47 durch 46.
Nach dem Ersetzen, kannst Du die Hintergrundfarbe mit der Konstanten BackColor festlegen.
Die anderen Konstanten musst Du ebenfalls entsprechend festlegen.
Eine HTML-Farbtabelle mit Namen, mit Hex-Werte und mit RGB-Werte sind hier zu sehen:
http://www.farb-tabelle.de/de/farbtabelle.htm
Die Abfrage für die Desktopgröße bekomme ich leider nicht anders hin
Option Explicit
Const BoxWidth = 300
Const BoxHeight = 80
Const TaskHeight = 60
Const BackColor = "#FFFFFF"
Const FontColor = "#EE7600"
'Main Beg
Call SendMsg("Textausgabe")
Wscript.Quit
'Main End
Private Sub SendMsg(ByRef Text)
Dim Fso, HtaPath, HtaFile, Shell, BoxLeft, BoxTop
Set Fso = CreateObject("Scripting.FileSystemObject")
HtaPath = Fso.GetParentFolderName(WScript.ScriptFullName) & "\Ausgabe.Hta"
Set HtaFile = Fso.CreateTextFile(HtaPath)
BoxTop = screen.Height - BoxHeight - TaskHeight: BoxLeft = screen.Width - BoxWidth
With HtaFile
.WriteLine "<html>"
.WriteLine "<head>"
.WriteLine "<title>Textausgabe</title>"
.WriteLine "<SCRIPT Language='VBScript'>"
.WriteLine "window.resizeTo " & BoxWidth & "," & BoxHeight
.WriteLine "window.moveTo " & BoxLeft & "," & BoxTop
.WriteLine "</SCRIPT>"
.WriteLine "<HTA:APPLICATION"
.WriteLine "ID='objHTA'"
.WriteLine "APPLICATIONNAME='Textausgabe'"
.WriteLine "SCROLL='no'"
.WriteLine "SINGLEINSTANCE='yes'>"
.WriteLine "<style type='text/css'>"
'.WriteLine "body { font-family:Arial, Tahoma; font-size:14px; background-color:" & BackColor & "; }"
.WriteLine "body { font-family:Arial, Tahoma; font-size:14px; }"
.WriteLine "</style></head>"
'.WriteLine "<body>"
.WriteLine "<body style=""filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=1, StartColorStr='#000000', EndColorStr='#0000FF')"">"
.WriteLine "<font color='" & FontColor & "'>" & Text & "</font><br>"
.WriteLine "</body>"
.WriteLine "</html>"
.Close
End With
Set Shell = CreateObject("Wscript.Shell")
Shell.Run HtaPath, 1, True: Fso.DeleteFile HtaPath
End Sub
Gruß Dieter
[edit] Code geändert am 02.08.2009 [/edit]
Man tut was man kann, um die Leute bei Laune zu halten
Und wenn's (hoffentlich) auch bei mOnstar funktioniert, dann habe ich meine Pfadfinder-Tat für heute vollbracht
Gruß Dieter
Und wenn's (hoffentlich) auch bei mOnstar funktioniert, dann habe ich meine Pfadfinder-Tat für heute vollbracht
Gruß Dieter
Hallo m0nstar!
Sorry, so gut sind meine Kenntnisse in HTA auch wieder nicht.
bastla hatte oben schonmal diesen Link angegeben, der Dir weiterhelfen könnte:
http://technet.microsoft.com/en-us/scriptcenter/dd742317.aspx
Gruß Dieter
Sorry, so gut sind meine Kenntnisse in HTA auch wieder nicht.
bastla hatte oben schonmal diesen Link angegeben, der Dir weiterhelfen könnte:
http://technet.microsoft.com/en-us/scriptcenter/dd742317.aspx
Gruß Dieter
Hallo mOnstar!
Falls Du mit den Buttons noch nicht weitergekommen bist, dann siehe Dir mal diesen Beitrag an:
Password Hidden input batch
In dem HTM-Scriptcode sind gute Beispiele zu sehen.
Gruß Dieter
Falls Du mit den Buttons noch nicht weitergekommen bist, dann siehe Dir mal diesen Beitrag an:
Password Hidden input batch
In dem HTM-Scriptcode sind gute Beispiele zu sehen.
Gruß Dieter
Hallo zusammen!
Da es offensichtlich doch einfacher geht, die Desktop-Größe zu ermitteln, habe ich meinen Code weiter oben entsprechend geändert. Die Anregung kam durch @afrankhauser.
Gruß Dieter
Da es offensichtlich doch einfacher geht, die Desktop-Größe zu ermitteln, habe ich meinen Code weiter oben entsprechend geändert. Die Anregung kam durch @afrankhauser.
Gruß Dieter
Hallo m0nstar!
Gern geschehen. Und es freut mich, dass Du es nach Deinen Wünschen hinbekommen hast
Gruß Dieter
Gern geschehen. Und es freut mich, dass Du es nach Deinen Wünschen hinbekommen hast
Gruß Dieter
Hallo zusammen!
Sorry, habe leider heute erst durch Zufall gemerkt, dass die Screen-Variablen in Zeile 27, an der falschen Stelle sitzen. Diese müssen mit in den HTA-Code.
Das funktionierende Script müsste dann so aussehen:
Gruß Dieter
Sorry, habe leider heute erst durch Zufall gemerkt, dass die Screen-Variablen in Zeile 27, an der falschen Stelle sitzen. Diese müssen mit in den HTA-Code.
Das funktionierende Script müsste dann so aussehen:
Option Explicit
Const BoxWidth = 300
Const BoxHeight = 80
Const TaskHeight = 60
Const BackColor = "#FFFFFF"
Const FontColor = "#EE7600"
'Main Beg
Call SendMsg("Textausgabe")
Wscript.Quit
'Main End
Private Sub SendMsg(ByRef Text)
Dim Fso, HtaPath, HtaFile, Shell, BoxLeft, BoxTop
Set Fso = CreateObject("Scripting.FileSystemObject")
HtaPath = Fso.GetParentFolderName(WScript.ScriptFullName) & "\Ausgabe.Hta"
Set HtaFile = Fso.CreateTextFile(HtaPath)
With HtaFile
.WriteLine "<html>"
.WriteLine "<head>"
.WriteLine "<title>Textausgabe</title>"
.WriteLine "<SCRIPT Language='VBScript'>"
.WriteLine "BoxLeft = screen.Width - " & BoxWidth
.WriteLine "BoxTop = screen.Height - " & BoxHeight + TaskHeight
.WriteLine "window.resizeTo " & BoxWidth & ", " & BoxHeight
.WriteLine "window.moveTo BoxLeft, BoxTop"
.WriteLine "</SCRIPT>"
.WriteLine "<HTA:APPLICATION"
.WriteLine "ID='objHTA'"
.WriteLine "APPLICATIONNAME='Textausgabe'"
.WriteLine "SCROLL='no'"
.WriteLine "SINGLEINSTANCE='yes'>"
.WriteLine "<style type='text/css'>"
'.WriteLine "body { font-family:Arial, Tahoma; font-size:14px; background-color:" & BackColor & "; }"
.WriteLine "body { font-family:Arial, Tahoma; font-size:14px; }"
.WriteLine "</style></head>"
'.WriteLine "<body>"
.WriteLine "<body style=""filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=1, StartColorStr='#000000', EndColorStr='#0000FF')"">"
.WriteLine "<font color='" & FontColor & "'>" & Text & "</font><br>"
.WriteLine "</body>"
.WriteLine "</html>"
.Close
End With
Set Shell = CreateObject("Wscript.Shell")
Shell.Run HtaPath, 1, True: Fso.DeleteFile HtaPath
End Sub
Gruß Dieter