bennib22
Goto Top

Position von MsgBox verschieben

Hi,

Immer wenn ich eine MsgBox-vbs aus führe, kommt das Dialogfenster in der Mitte vom Bildschirm.
Kann ich die Position verändern?
Wie?

Hier der MsgBox Code:

x=MsgBox("Trink ein Glas Wasser",290+14,"Titel")


Danke im voraus
bennib22

Content-Key: 128116

Url: https://administrator.de/contentid/128116

Printed on: April 20, 2024 at 01:04 o'clock

Member: bastla
bastla Oct 28, 2009, updated at Oct 18, 2012 at 16:39:47 (UTC)
Goto Top
Hallo bennib22!

Schau mal hier vorbei ...

Grüße
bastla
Member: Tommy70
Tommy70 Oct 28, 2009 at 10:45:14 (UTC)
Goto Top
Hi,

schau dir mal das an. ist zwar für VB. Soll aber anscheinend so ähnlich auch in VBS zu realisieren sein.

Gruß
Tom
Member: ZAFAS
ZAFAS Oct 28, 2009 at 10:46:37 (UTC)
Goto Top
Member: bennib22
bennib22 Oct 28, 2009 at 11:00:25 (UTC)
Goto Top
Ich hab trotzdem ne Frage.
Ist das eine vbs oder html datei?
Bei html sperrt der Internet Explorer den Zugriff,
bei vbs kommtv Anweisung erwartet Zeile 1 Zeichen 1.
Der Code:
<html><head><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.ScreenHeightNextintLeft = (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>
Member: ZAFAS
ZAFAS Oct 28, 2009 at 11:17:56 (UTC)
Goto Top
Zitat von @bennib22:

Ist das eine vbs oder html datei?

<SCRIPT Language="VBScript">
Member: 5t8d1e
5t8d1e Oct 28, 2009 at 12:40:47 (UTC)
Goto Top

<HTA:APPLICATION

Hallo,

hier wird es verraten. Es ist eine HTML-Applikation. Wenn du denn Sourcecode in den Editor deiner Wahl abspeichert dann mußt du die Dateierweiterung .hta benutzen.

TST

PS.: hier noch ein Link zu HTA
http://technet.microsoft.com/de-de/scriptcenter/dd742317(en-us).aspx
Member: bastla
bastla Oct 28, 2009 at 14:15:16 (UTC)
Goto Top
@ZAFAS & Tommy70

In VBS können keine API-Calls verwendet werden.

Grüße
bastla
Member: bennib22
bennib22 Oct 28, 2009 at 14:20:41 (UTC)
Goto Top
Ich versteh garnixmehrface-sadface-sadface-sadface-sadface-sad!

bennib22
Member: bastla
bastla Oct 28, 2009 at 14:40:14 (UTC)
Goto Top
Hallo bennib22!

Wo genau ist das Problem?

Der von ZAFAS und Tommy70 verlinkte "VB-fun.de"-Tipp ist leider für VBS nicht verwendbar, da er auf Funktionen der Windows-API zurückgreift, die in VBS nicht angesprochen werden können ...

... aber der im von mir verlinkten Forumsbeitrag dargestellte Ansatz sollte eigentlich funktionieren.

Grüße
bastla
Member: Tommy70
Tommy70 Oct 28, 2009 at 14:56:52 (UTC)
Goto Top
Zitat von @bastla:
@ZAFAS & Tommy70

In VBS können keine API-Calls verwendet werden.

Grüße
bastla

Stimmt so nicht ganz Link ;)
Man muss "nur" die benötigten Funktionn als VB ActiveX DLL implementieren und dann aus VBScript heraus wrappen.

Gruß
Tom
Member: bennib22
bennib22 Oct 28, 2009 at 15:17:59 (UTC)
Goto Top
Kann mir bitte mal jemand gaaaanz ausführlich den Syntax zum Ändern der Position der MsgBoX per vbs sagen!

Danke im Voraus
bennib22
Member: bastla
bastla Oct 28, 2009 at 16:06:59 (UTC)
Goto Top
@Tommy70

Dann einigen wir und am besten auf: "In native VBS können keine API-Calls verwendet werden" ...

Kann mir bitte mal jemand gaaaanz ausführlich den Syntax zum Ändern der Position der MsgBoX per vbs sagen!
Sagst Du es dann bennib22? face-wink

Grüße
bastla
Member: Tommy70
Tommy70 Oct 29, 2009 at 05:31:53 (UTC)
Goto Top
Zitat von @bastla:
@Tommy70

Dann einigen wir und am besten auf: "In
native VBS können keine API-Calls verwendet
werden" ...

OK face-smile

> Kann mir bitte mal jemand gaaaanz ausführlich den Syntax
zum Ändern der Position der MsgBoX per vbs sagen!
Sagst Du es dann bennib22? face-wink

Ist eigentlich in deinem Beispiel schon ausführlich beschrieben. Was soll man da noch mehr sagen.
Member: bennib22
bennib22 Oct 29, 2009 at 09:48:43 (UTC)
Goto Top
Mein Beispiel funktioniert nicht!
Hilft mir bitte!

benni
Member: Tommy70
Tommy70 Oct 29, 2009 at 10:18:04 (UTC)
Goto Top
Zitat von @bennib22:
Mein Beispiel funktioniert nicht!
Hilft mir bitte!

benni

Einfach den Code den du oben bereits gepostet hast in einer .hta Datei abspeichern. Dann müsste es funktionieren.
Mitglied: 76109
76109 Oct 29, 2009 at 10:26:44 (UTC)
Goto Top
Hallo zusammen!

Hier ein VB-Script (*.vbs), das eine Hta-MsgBox in Abhängigkeit der Konstanten ausgibt.
Die Konstanten können selbstverständlich auch in die Funktion als Übergabeparameter eingebunden werden.
Die HtaBox enthält einen OK und einen Cancel-Button und gibt auf Umwege vbOK oder vbCancel zurück.
Das Ganze kann eigentlich relativ einfach an eigene Vorstellungen angepasst werden.
Die zwei Kommentarzeilen in Msg.WriteLine enthalten mit Screen.Width und Screen.Height die Bildschirmgröße.

Den Quelltext kopieren und unter *.vbs abspeichern und starten.

Das sieht dann - je nach Bildschirmdarstellung - in etwa so aus:
dec15281220bbd00df337b793c143372-htabox

Option Explicit

Const BoxTop = 200
Const BoxLeft = 200
Const BoxWidth = 300
Const BoxHeight = 120

Const FontType = "Arial"  
Const FontSize = 12

'Main Beg  
    Dim Return

    Return = HtaBox("Mein Text", "Mein Titel")  

    If Return = vbOK Then MsgBox "Rückgabe OK"  

    If Return = vbCancel Then MsgBox "Rückgabe Cancel"  

    Wscript.Quit

'Main End  


Private Function HtaBox(ByRef Text, ByRef Titel)
    Dim Fso, Shell, Msg, Path

    Set Fso = CreateObject("Scripting.FileSystemObject")  
    Path = Fso.GetParentFolderName(WScript.ScriptFullName) & "\Msg.Hta"  
    Set Msg = Fso.CreateTextFile(Path)

    With Msg
        .WriteLine "<html>"  
        .WriteLine "<head>"  
        .WriteLine "<title>" & Titel & "</title>"  
        .WriteLine "<SCRIPT Language='VBScript'>"  
        '.WriteLine "BoxLeft = (Screen.Width - " & BoxWidth & ") / 2"  'Ohne Const BoxLeft = Horizontal Zentriert  
        '.WriteLine "BoxTop = (Screen.Height - " & BoxHeight & ") / 2" 'Ohne Const BoxTop = Vertikal Zentriert  
        .WriteLine "Window.ResizeTo " & BoxWidth & ", " & BoxHeight  
        .WriteLine "Window.MoveTo " & BoxLeft & ", " & BoxTop  
        .WriteLine "Dim Fso, Hta, HtaPath"  
        .WriteLine "Set Fso = CreateObject(""Scripting.FileSystemObject"")"  
        .WriteLine "HtaPath = Window.Location.Pathname"  
        .WriteLine "Set Hta = Fso.CreateTextFile(HtaPath)"  
        .WriteLine "Sub RetOK"  
        .WriteLine "Hta.WriteLine vbOK"  
        .WriteLine "Hta.Close"  
        .WriteLine "Close"  
        .WriteLine "End Sub"  
        .WriteLine "Sub RetCancel"  
        .WriteLine "Hta.WriteLine vbCancel"  
        .WriteLine "Hta.Close"  
        .WriteLine "Close"  
        .WriteLine "End Sub"  
        .WriteLine "</SCRIPT>"  
        .WriteLine "<HTA:APPLICATION"  
        .WriteLine "ID='objMsg'"  
        .WriteLine "APPLICATIONNAME='Msg-Ausgabe'"  
        .WriteLine "MaximizeButton='no'"  
        .WriteLine "MinimizeButton='no'"  
        .WriteLine "SCROLL='no'"  
        .WriteLine "SINGLEINSTANCE='yes'>"  
        .WriteLine "</head>"  
        .WriteLine "<body bgcolor='buttonface' style='font-family:" & FontType & ";font-size:" & FontSize & "px'>"  
        .WriteLine "<p>" & Text & "</p>"  
        .WriteLine "<table border='0' width='100%'><tr>"  
        .WriteLine "<td width='50%' align='center'>"  
        .WriteLine "<input type='button' value='    OK    ' tabindex='1' onClick='RetOK'></td>"  
        .WriteLine "<td width='50%' align='center'>"  
        .WriteLine "<input type='button' value='Cancel' tabindex='2' onClick='RetCancel'></td>"  
        .WriteLine "</tr></table></body></html>"  
        .Close
    End With
    Set Shell = CreateObject("Wscript.Shell"):  Shell.Run Path, 1, True  
    Set Msg = Fso.OpenTextFile(Path)
    If Msg.AtEndOfStream Then HtaBox = vbCancel Else HtaBox = CInt(Msg.ReadLine)
    Msg.Close:  Fso.DeleteFile Path
End Function

Gruß Dieter

[edit] In Zeile 59 noch die Parameter für die Buttons Fenster Mini/Maximize yes/no eingefügt [/edit]
[edit] In Zeile 63 hatte ich den Tag "</head>" auch noch vergessen [/edit]
Member: bennib22
bennib22 Oct 29, 2009 at 10:33:05 (UTC)
Goto Top
Ich hab den Code von oben als *.hta gespeichrt & ausgeführt.
Es kommt ne Fehlermeldung:
"Typkonflikt: Zeile:15 Zeichen:1
Möchten sie fortfahren?"
Es gibt ja und nein zur Auswahl
Nach der Bestätigung komm ein weißes Fenster mit *.hta in der Kopfzeile.

Gruß
benni
Member: bennib22
bennib22 Oct 29, 2009 at 10:49:12 (UTC)
Goto Top
Eeendlich klappts!
Danke Dieter!
Danke auch an alle Andern die mir (wenigstens ein bisschen face-smile) geholfen haben!


mfG
bennib22
Mitglied: 76109
76109 Oct 29, 2009 at 11:27:04 (UTC)
Goto Top
Hallo bennib22!

Freut mich, wenn's endlich klapptface-smile

Gruß Dieter
Member: bennib22
bennib22 Oct 29, 2009 at 14:22:30 (UTC)
Goto Top
Noch eine Frage.
Wo ist der Parameter wohin das Fenster verschoben wird??

bennib22
Mitglied: 76109
76109 Oct 29, 2009 at 14:53:41 (UTC)
Goto Top
Hallo bennib22!

Ist das jetzt ne Scherzfrageface-smile

Ich habe zwar keine Ahnung, was Du genau meinst. Aber ich rate mal und nehme an, dass Du die Position für Left und Top als Übergabeparameter an die Funktion HtaBox meinst. Wenn dem so ist, dann den Code folgendermaßen anpassen:

Die Konstanten in Zeile 3 und 4 entfernen

Die Zeile 25 durch diese Zeile ersetzen:
Private Function HtaBox(ByRef Text, ByRef Titel, ByVal BoxLeft, ByVal BoxTop) 
Den Aufruf in Zeile 14 ändern in z.B.:
Return = HtaBox("Mein Text", "Mein Titel", 200, 200)   
Wenn das nicht gemeint war, dann bitte etwas genauer formulierenface-wink

Gruß Dieter
Member: bennib22
bennib22 Oct 29, 2009 at 15:13:15 (UTC)
Goto Top
Das hat mir geholfen!

Danke nochmal.
bennib22

PS: Du kannst gut raten!face-big-smile