![]() |
Kontextmenüs sperren? WIE?
hi Leute,
schon wieder nerver ich mit einer weltbewegenden frage. Wie kann ich Kontext-Menüs (rechtsklickmenüs) abfangen oder sperren? |
Nur so ein Gedanke,
es gibt ja OnMouseDown. Da kannst du dann sagen Taste rechts, wenn gedrückt, dann Key := 0; Oder das ganze im OnKeyPress/Down des Form. Grüsse, Daniel :hi: |
Nein, ich will Kontext-Menüs Global, also überall in Windows sperren.
Ach ja, und das unter Win98! :oops: |
Aber Achtung: Ein einfaches Abfangen der Rechtsklicks bringt nicht, weil man auch mit der Rechtklicktaste auf der Tastatur einen Rechtklick produzieren kann!
|
Es wäre mir vielleicht schon geholfen, wenn ich wüsste welches Handle das gerade geöffnete Startmenü hat.
Dann kann man es einfach minimieren, oder schliessen. Ich hatte es mit Findwindow und showwindow probiert:
Code:
Diesen Code hatte ein Timer alle 100ms aufgerufen.
showwindow(findwindow('PopupMenu',nil),SW_MINIMIZE);
Doch die Kontextmenüs blieben Sichtbar :(( Hat jemand vielleicht eine Idee warum? MFG Thomas :spin: :shock: |
Vielleicht gibts ein Refresh, â la F5.
Dann würde es "theoretisch" verschwinden. Grüsse, Daniel :hi: |
Wo gibs ein Refresh?
Ich kann ja nicht ständig F5 senden... |
Moin Thomas,
ich denke mal, dass Deine Variante deshalb nicht funktioniert, weil Du nicht wissen kannst, wie der Klassenname eines Popupmenüs ist. Der kann sich von Programm zu Programm ändern. Abfangen liesse sich diese Anzeige wahrscheinlich durch einen Maus und Tastatur Hook, nur: Was machst Du bei Programmen, die ohne Kontextmenü nicht, kaum oder schlecht bedienbar werden. Solltest Du nur die Kontextmenüs bestimmter Programme unterdrücken wollen, wäre es interessant zu wissen, welche Programme dies betrifft. |
Die Kontext-Menüs der öffnen und speichern dialoge verschiedener Programme.
Das Kontext-Menü des IEXPLORERs. Ich habe es mir mit Winsight angeschaut: http://users.delphipraxis.net/thomas...mann/popup.JPG |
Moin Thomas,
in dem von Dir gezeigten Beispiel müsste der Klassenname #32768 lauten. Du müsstest also FindWindow(PChar('#32768'),nil) verwenden. Die meisten Dialoge (z.B. Fehlermeldungen) haben meist die Klasse #32770. Gerade beim IE kann man das Kontextmenü allerdings auch über Policies einschränken (ich muss mal den Key raussuchen). Was willst Du denn genau mit der Sperrung des Kontextmenüs unterbinden? |
Álle mit dem VC Ressourceneditor erstellten Oberflächen haben diesen Klassennamen: #32768.
|
Ich möchte gerne HD-Zugriffe sperren, also unerlaubtes Speichern.
Ausserdem kann man mit dem Open und Save dialogen dateien löschen, kopieren, ect... Zitat:
|
Moin Thomas,
hier mal ein Link, unter dem Du eventuell etwas findest. ![]() Lass Dich nicht durch das NT 4.0 abschrecken, es soll sich auch auf W95 beziehen (und somit wohl auch auf Win98). |
Zitat:
![]() |
@Christian: es hat gefunzt. :D
@Luckie: Danke dein Tourtorial war sehr intressant. Meine weitere Frage: Wie kann ich die "Vater-Anwendung" herausfinden, wenn ich ein Handle hab? Kann jemand ein Policies Kompendium? Also wo alle Policie-Keys drin stehen? |
Hallo Thomas,
Es ist zwar ein Bischen spät, aber hast Du Dir mal die TActionlist-Komponente angesehen !? - Mit jener Komponente kannst Du überall in Deinem Programm MenuItems, Button, usw. enablen bzw. disablen wann immer Du willst.
Code:
Gruß, Tom
ActionItem.Enabled:=True;
ActionItem.Enabled:=False; [edit by Admin]BB-Codes aktiviert[/edit] |
Ich wollte die Kontext-Menüs für andere Anwendugen sperren, nicht für meine eigene. Aber trotzdem danke :-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz