Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Kontextmenüs sperren? WIE? (https://www.delphipraxis.net/901-kontextmenues-sperren-wie.html)

thomasdrewermann 22. Sep 2002 17:41


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?

Daniel B 22. Sep 2002 18:13

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:

thomasdrewermann 22. Sep 2002 18:15

Nein, ich will Kontext-Menüs Global, also überall in Windows sperren.
Ach ja, und das unter Win98! :oops:

theomega 22. Sep 2002 18:31

Aber Achtung: Ein einfaches Abfangen der Rechtsklicks bringt nicht, weil man auch mit der Rechtklicktaste auf der Tastatur einen Rechtklick produzieren kann!

thomasdrewermann 22. Sep 2002 20:16

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:
showwindow(findwindow('PopupMenu',nil),SW_MINIMIZE);
Diesen Code hatte ein Timer alle 100ms aufgerufen.

Doch die Kontextmenüs blieben Sichtbar :((

Hat jemand vielleicht eine Idee warum?

MFG
Thomas :spin: :shock:

Daniel B 22. Sep 2002 20:21

Vielleicht gibts ein Refresh, â la F5.
Dann würde es "theoretisch" verschwinden.

Grüsse, Daniel :hi:

thomasdrewermann 22. Sep 2002 20:33

Wo gibs ein Refresh?
Ich kann ja nicht ständig F5 senden...

Christian Seehase 23. Sep 2002 00:45

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.

thomasdrewermann 23. Sep 2002 14:14

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

Christian Seehase 23. Sep 2002 15:14

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?

Luckie 23. Sep 2002 16:17

Álle mit dem VC Ressourceneditor erstellten Oberflächen haben diesen Klassennamen: #32768.

thomasdrewermann 23. Sep 2002 17:05

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:

Álle mit dem VC Ressourceneditor erstellten Oberflächen haben diesen Klassennamen
Ich hab das jetzt nicht verstanden. Was ist das ?

Christian Seehase 23. Sep 2002 17:29

Moin Thomas,

hier mal ein Link, unter dem Du eventuell etwas findest.

Guide To Windows NT 4.0 Profiles and Policies (Part 6 of 6)

Lass Dich nicht durch das NT 4.0 abschrecken, es soll sich auch auf W95 beziehen (und somit wohl auch auf Win98).

Luckie 23. Sep 2002 17:32

Zitat:

Zitat von thomasdrewermann
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:

Álle mit dem VC Ressourceneditor erstellten Oberflächen haben diesen Klassennamen
Ich hab das jetzt nicht verstanden. Was ist das ?

http://www.luckie-online.de/delphi/t.../dialoge.shtml

thomasdrewermann 23. Sep 2002 17:47

@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?

vanveen@onlinehome.de 28. Sep 2002 23:12

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:
ActionItem.Enabled:=True;
ActionItem.Enabled:=False;
Gruß, Tom

[edit by Admin]BB-Codes aktiviert[/edit]

thomasdrewermann 29. Sep 2002 10:31

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