Fenster - Kontextmenü der Titelleiste deaktivieren

  • Hallo,

    ich benötige, am Topic unschwer zu erkennen, eine Lösung um das komplette Kontextmenü eines Fensters zu deaktivieren. Alternativ würde ich mich auch über eine Lösung freuen, die einzelnen Einträge zu deaktivieren (auszugrauen). Ich benötige dies für den UltraVNC Viewer, da der Benutzer keine Änderungen an den Einstellungen vornehmen soll!

    Ich habe auch schon versucht den Style des UltraVNC-Fensters auf $WS_POPUP zu setzen, dann lässt sich das Ganze aber nicht mehr alleine schließen und $WS_EX_TOOLWINDOW zum Ausblenden des Eintrags auf der Taskleiste funktioniert damit auch nicht. (Ansonsten hätte ich das Schließen des Fensters von einem anderen Fenster abhängig gemacht!)

    Oder gibt es eine Möglichkeit eine Window-Class in eine GUI zu integrieren, so wie mit Objekten? Bin für jeden Vorschlag dankbar!

    Man beachte auch bitte den Anhang!

  • Naja, der Screenshot zeigt das Kontextmenü. Das ist also kein Fenster! Die Kommandozeilenoptionen und Konfigurationsdateien von UltraVNC scheinen das Ausblenden dieses Menüs nicht zu erlauben, daher auch meine Lösungsansätze, ansonsten wär es ja relativ simpel. Und für dieses Kontextmenü bekomme ich nun mal keine ControlIDs/Handles...

  • Jawohl, danke progandy! Das hat den gewünschten Effekt gebracht.

    Es bleibt allerdings noch ein Problem, für das ich keine Lösung weiß:
    Und zwar verfügt das UltraVNC-Fenster des Viewers über eine eigene TItelleiste, die ich nun auch modifizieren möchte. Die Buttons auf der Leiste auszublenden war kein Problem, jedoch verfügt auch diese wieder über ein Kontextmenü, an das ich mit _GUICtrlMenu_GetSystemMenu nicht heran zu kommen scheine. Außerdem bewirkt ein Doppelklick auf diese Leiste ein "Restore" des Fensters. Die Deaktivierung dieses Kontextmenüs ist notwendig, da ich den UltraVNC Viewer im Vollbild-Modus starte und sämtliche Modifikationen am Fenster (Verschieben, Größe ändern) verbieten möchte, so dass es vom Benuter wirklich nur noch geschlossen werden kann. Durch das Doppelklicken und das Kontextmenü der Titelleiste ist es jedoch möglich das Fenster zu "restoren".

    Daher meine Frage, wie kann ich dieses Menü verstecken/deaktivieren und die Funktion des Doppelclicks abschalten (bzw. abfangen). Eine Lösung mit _IsPressed kommt nicht in Frage, da ich darauf nicht während der ganzen UltraVNC-Session prüfen möchte und kann! (Wahrscheinlich würde durch das Löschen des "Restore"-Eintrags aus dem Kontextmenü der gewünschte Effekt erzielt, war bei dem anderen Kontextmenü auch so!). Screenshot ist im Anhang, das Kontextmenü scheint ebenfalls keine controlID zurückzugeben!

    Achja, hier die Funktion zum Löschen des Kontextmenüs des UltraVNC Viewers (nur die Schließen-Funktionalität bleibt bestehen, s.o.) Werde ich später evtl. mal konfigurierbarer machen und hier posten!):

    [autoit]

    Func _UltraVNCViewerMenuDelete()
    Local Const $S_WINTITLE = "[CLASS:VNCMDI_Window]"
    Local Const $S_WINTEXT = "VNCviewer"
    If Not WinExists($S_WINTITLE, $S_WINTEXT) Then Return 0

    Local Const $H_MENUSYS = _GUICtrlMenu_GetSystemMenu(WinGetHandle($S_WINTITLE, $S_WINTEXT))
    For $i = 0 To 5
    _GUICtrlMenu_DeleteMenu($H_MENUSYS, 0)
    Next

    For $i = 0 To 33
    _GUICtrlMenu_DeleteMenu($H_MENUSYS, 1)
    Next

    [/autoit][autoit][/autoit][autoit]

    Return 1
    EndFunc ;==>_UltraVNCViewerMenuDelete

    [/autoit]
  • lol, ernsthaft? Wie find ich denn raus, welches es ist? Aber ganz ehrlich, eigentlich wollte ich die vncviewer.exe nicht "hacken", sondern es sollte primär die Original-Datei verwendet werden.
    Also falls ich keine Lösung für das Problem finde, werde ich dem User wohl zumindest das Verschieben und Ändern der Größe des UltraVNC Viewer Fensters erlauben. Das ist immer noch besser als die Stolperfalle mit der VNC Viewer Titelleiste...