Seite 1 von 1
Menü in fremden Programmen disablen (Erledigt)
Verfasst: 18.11.2013 16:34
von enigma
Hallo,
stundenlanges Googlen und suchen hier im Forum bringt mich nicht weiter. Ich möchte in einem fremden Programm z.B. Winamp das PopUp-Menue der Media Library disablen. Alles rummachen mit GetMenu, GetSystemMenu, EnableMenu u.s.w. hat keinen Erfolg. Es gelingt mir nicht einmal das Handle auszulesen. WinSpy zeig auch nichts an wenn ich mit der Maus darauf gehe. Ist das, was ich will überhaupt möglich? Ich werde wohl ein transparentes Fenster darüberlegen müssen.
Hat jemand eine Idee?
Gruß
Enigma
Re: Menü in fremden Programmen disablen
Verfasst: 18.11.2013 16:50
von RSBasic
Warum möchtest du denn das Popup-Menü deaktivieren? Was ist das Ziel deines Vorhabens?
Reicht es nicht aus, einfach nicht rechts zu klicken?
Re: Menü in fremden Programmen disablen
Verfasst: 18.11.2013 17:05
von NicTheQuick
Ein Popup-Menü wird erst erstellt, sobald man drauf klickt. Das ist bei Purebasic ja auch nicht anders. Das heißt du müsstest wie RSBasic richtig vorschlug eher den Rechtsklick verhindern anstatt das Menü zu deaktivieren.
Re: Menü in fremden Programmen disablen
Verfasst: 18.11.2013 19:39
von enigma
Sorry, das war mein Fehler.

Es ist kein PopUp sondern ein PullDown-Menü.
Also bei Winamp in der Media Library gibt es drei Menüpunkte: File, View, Help. Klicke ich auf einen, öffnet sich ein Menü mit mehreren Auswahlmöglichkeiten zum Teil auch Untermenüs. Also eigentlich ganz normale Menüs. Und diese Menüs kann ich ums verrecken nicht ermitteln und disablen. Der Grund für mein Vorhaben ist, ich möchte verhindern das irgendwer, ohne mich zu fragen, Einstellungen verändert. Ich hoffe das ich mich einigermaßen verständlich ausgedrückt habe. Also: es geht mir darum die drei Menüs File, View und Help unbenutzbar zu machen.
Tut mir leid das ich euch in die falsche Richtung geschickt habe
Rechtsklick wird aus diesem Grunde auch verhindert werden. Aber eins nach dem Anderen, denn ich möchte bei dieser Aktion auch einiges über PureBasic lernen.
Gruß
Enigma
Re: Menü in fremden Programmen disablen
Verfasst: 18.11.2013 20:52
von Derren
Also unter "Pulldown" verstehe ich so was wie das ComboBoxGadget in PB.
Du meinst einfach ein ganz normales Menü^^
Und so sieht das ganze aus
Oder so, je nach Skin/Version:
http://www.blogcdn.com/blog.winamp.com/ ... -image.jpg
Da Winamp, abgesehen von dem Optionenfenster komplett geskinnt ist, würde ich davon ausgehen, dass kein Menü im klassischen Sinne existiert, sondern dass es sich tatsächlich um ein Popup-Menü handelt, dass einfach an einer bestimmten Stelle (relativ zum Fenster, nicht an der Mausposition) erstellt wird.
Du scheinst ja auch kein Menü finden zu können.
Versuchs dochmal hiermit (ungetestet)
Code: Alles auswählen
;hWnd = Windowhandle von Winamp
hMenu = GetMenu_(hWnd)
count = GetMenuItemCount_(hMenu)
For i = 0 To count
RemoveMenu_(hMenu, 0, #MF_BYPOSITION | #MF_REMOVE)
Next
;force a redraw
DrawMenuBar_(hWnd);
Re: Menü in fremden Programmen disablen
Verfasst: 19.11.2013 07:23
von enigma
Danke, genau das meine ich!
Ich werde deinen Code nachher mal testen.
Gruß
Enigma
Leider kein Erfolg. Werde wohl das unsichtbare Fenster nehmen.
Re: Menü in fremden Programmen disablen
Verfasst: 19.11.2013 17:03
von Derren
Versuchs mal hiermit.
Das muss allerdings in einem Timer laufen. Was besseres hab ich nicht gefunden.
Quelle:
http://social.msdn.microsoft.com/Forums ... pplication
Der Code funkioniert aber nur bedingt. Im Grunde bekomme ich erst einen Output, wenn das Popupmenü wieder geschlossen wird. Und das Kontextmenü im Firefox findet er gar nicht.
Code: Alles auswählen
Repeat
Delay(5)
hPopupWnd = FindWindow_("#32768", 0)
Until hPopupWnd <> 0 Or GetAsyncKeyState_(27)
Debug hPopupWnd
;ShowWindow_(hPopupWnd,0)
Ansonsten würd ich versuchen mit ResourceHacker (
http://www.angusj.com/resourcehacker/) einfach alle Menüeinträge in der Winamp.exe zu löschen. Dann musst du halt eine Backupversion haben, wenn du Einstellungen verändern willst.
Re: Menü in fremden Programmen disablen
Verfasst: 20.11.2013 20:17
von enigma
Hallo,
@Derren
der Code macht nicht was ich will aber dein Hinweis auf die Skins hat mich auf die richtige Spur gebracht. Es sind keine "richtigen" Menüs. Ich kann in den Skins die die Anzeige einfach ausschalten.
Gruß
Enigma