AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Zugriff auf das Standard-Popupmenu von TEdit, TMemo usw.?
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf das Standard-Popupmenu von TEdit, TMemo usw.?

Ein Thema von Ralf Kaiser · begonnen am 9. Apr 2012 · letzter Beitrag vom 9. Apr 2012
Antwort Antwort
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Zugriff auf das Standard-Popupmenu von TEdit, TMemo usw.?

  Alt 9. Apr 2012, 19:41
Wenn du in deinem Kontextmenü Actions verwendest, dann kannst du von dort die entsprechenden Standardactions verwenden.
Das nachbauen der "normalen" Standardfunktionen ist nicht das Problem. Aber je nach Windowsversion (und vor allem: je nach installierten IMEs für z.B. Japanisch oder Chinesich) enthält das Menü noch andere Einträge.

Nur gibt es, scheinbar, keine Möglichkeit diese Einträge zumindest auszulesen um sie dann, je nachdem welche vorhanden sind, nachzubilden. "GetMenu" liefert zwar einen Pointer zurück, der aber laut "IsMenu" kein Zeiger auf ein Menü ist.

Das meinte ich, als ich schrieb, dass Windows dieses Menü "sehr privat" behandelt.
Ralf Kaiser
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Zugriff auf das Standard-Popupmenu von TEdit, TMemo usw.?

  Alt 9. Apr 2012, 19:52
Weiss jetzt nicht wo das problem ist daran zu kommen zu mindest funktioniert es bei NotePad.
Allerdings ist dieses als Standard und Popup Menu gleich ausgelegt.

Fremde Menus Fernsteuern

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Zugriff auf das Standard-Popupmenu von TEdit, TMemo usw.?

  Alt 9. Apr 2012, 20:20
Weiss jetzt nicht wo das problem ist daran zu kommen zu mindest funktioniert es bei NotePad.
Allerdings ist dieses als Standard und Popup Menu gleich ausgelegt.

Fremde Menus Fernsteuern

gruss
Nein, es funktioniert nicht. Das Menü, was dieses Programm ausliest ist NICHT das Standard-Popup von Notepad sondern das Hauptmenü von Notepad!

Ich meine das Menü, das angezeigt wird wenn eine Windows-Textbox (in Delphi-Sprache: ein TEdit) kein eigenes Popupmenü definiert. Dieses Menü enthält mindestens die Befehle zur Textbearbeitung (Copy/Cut/Paste usw,) und einige andere Windowsversion-abhängige Einträge die zur Steuerung der Eingabe dienen.

Und dieses Menü wird von dem Programm nicht ausgelesen!
Ralf Kaiser

Geändert von Ralf Kaiser ( 9. Apr 2012 um 20:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.960 Beiträge
 
Delphi 12 Athens
 
#4

AW: Zugriff auf das Standard-Popupmenu von TEdit, TMemo usw.?

  Alt 9. Apr 2012, 20:52
Nur gibt es, scheinbar, keine Möglichkeit diese Einträge zumindest auszulesen um sie dann, je nachdem welche vorhanden sind, nachzubilden. "GetMenu" liefert zwar einen Pointer zurück, der aber laut "IsMenu" kein Zeiger auf ein Menü ist.
Gib doch nicht so schnell auf...

Aber wenn du nicht weitermachst, mache ich es halt... wie hatte ich ja schon geschrieben.
Ich habe gerade herausgefunden, dass Windows aus der comctl32.dll heraus TrackPopupMenuEx benutzt um danach das Menü aufzurufen. Ein Beispiel, das einen Beispielmenüeintrag in das Menü einfügt, liegt im Anhang. Es wird die JCL für den Hook benutzt.

Im Moment funktioniert es noch nicht auf den Klick zu reagieren, da die entsprechende Message offenbar nicht an die eigene Anwendung oder das Editcontrol gesendet wird. Aber das lässt sich sicher auch noch machen.

Und ansonsten geht zumindest das Auslesen der Einträge ja jetzt schon.
Angehängte Dateien
Dateityp: 7z Edit Kontextmenü erweitern.7z (2,07 MB, 87x aufgerufen)
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Zugriff auf das Standard-Popupmenu von TEdit, TMemo usw.?

  Alt 9. Apr 2012, 21:00
Nur gibt es, scheinbar, keine Möglichkeit diese Einträge zumindest auszulesen um sie dann, je nachdem welche vorhanden sind, nachzubilden. "GetMenu" liefert zwar einen Pointer zurück, der aber laut "IsMenu" kein Zeiger auf ein Menü ist.
Gib doch nicht so schnell auf...
Na ja, es ist Ostern und da hat man ja auch noch ein Familienleben...

Erst einmal Danke für deine Bemühnugen, ich werde mir das Beispiel morgen mal näher ansehen!
Ralf Kaiser
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:03 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