Menü in fremden Programmen disablen (Erledigt)

Anfängerfragen zum Programmieren mit PureBasic.
enigma
Beiträge: 52
Registriert: 13.09.2011 13:52

Menü in fremden Programmen disablen (Erledigt)

Beitrag 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
Zuletzt geändert von enigma am 20.11.2013 20:19, insgesamt 1-mal geändert.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Menü in fremden Programmen disablen

Beitrag 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?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Menü in fremden Programmen disablen

Beitrag 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.
enigma
Beiträge: 52
Registriert: 13.09.2011 13:52

Re: Menü in fremden Programmen disablen

Beitrag von enigma »

Sorry, das war mein Fehler. :oops: 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 :oops:
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
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: Menü in fremden Programmen disablen

Beitrag 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
Bild

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);
Signatur und so
enigma
Beiträge: 52
Registriert: 13.09.2011 13:52

Re: Menü in fremden Programmen disablen

Beitrag 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.
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: Menü in fremden Programmen disablen

Beitrag 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.
Signatur und so
enigma
Beiträge: 52
Registriert: 13.09.2011 13:52

Re: Menü in fremden Programmen disablen

Beitrag 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. :roll: :D :oops:

Gruß
Enigma
Antworten