AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Menühandle einer fremden Anwendung ermitteln?
Thema durchsuchen
Ansicht
Themen-Optionen

Menühandle einer fremden Anwendung ermitteln?

Ein Thema von hitzi · begonnen am 23. Aug 2006 · letzter Beitrag vom 24. Aug 2006
Antwort Antwort
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#1

Menühandle einer fremden Anwendung ermitteln?

  Alt 23. Aug 2006, 14:14
Hallo,

wie kann ich das Menühandle einer fremden Anwendung ermitteln? Das Handle der Anwendung habe ich, weiterhin komme ich auch - so weit ich das jetzt überblicken kann - auch an jedes Control, wie Buttons, Edits, .... Nur an das Menü komm ich nicht ran. Einen Hotkey für den gewünschten Menüpunkt ist leider auch nicht vorhanden.

Ich muss aber über das Menü einen Menüpunkt öffnen. Habe auch schon probiert über die Simulation der Tastatureingaben den Menüpunkt auszuwählen, was aber zu keiner Reaktion im Programm führte.

Quelltext zur Simulation der Tastatureingabe(dWindowHandle ist das Handle des Hauptfensters der Anwendung):
Delphi-Quellcode:
PostMessage(dWindowHandle, WM_SETFOCUS, 0, 0);
      PostMessage(dWindowHandle, WM_KEYDOWN, VK_LMENU, 0);
      Sleep(100);
      PostMessage(dWindowHandle, WM_KEYUP, VK_LMENU, 0);
      Sleep(100);
      PostMessage(dWindowHandle, WM_KEYDOWN, VK_DOWN, 0);
      Sleep(100);
      PostMessage(dWindowHandle, WM_KEYUP, VK_DOWN, 0);
      Sleep(100);
      PostMessage(dWindowHandle, WM_KEYDOWN, VK_DOWN, 0);
      Sleep(100);
      PostMessage(dWindowHandle, WM_KEYUP, VK_DOWN, 0);
      Sleep(100);
      PostMessage(dWindowHandle, WM_KEYDOWN, VK_RETURN, 0);
      Sleep(100);
      PostMessage(dWindowHandle, WM_KEYUP, VK_RETURN, 0);
Gibt es vielleicht sogar einen direkteren Weg ein Menüelement ferngesteuert auszuwählen?

Vielen Dank
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Menühandle einer fremden Anwendung ermitteln?

  Alt 23. Aug 2006, 15:10
Versuche doch einfach, die Id herauszufinden, die beim WM_COMMAND übergeben wird, wenn man den entsprechenden Menüpunkt auswählt (hieß das Tool Spy++?). Die zu schicken müsste denselben Effekt haben wie manuell den Menüpunkt auszuwählen.

// EDIT

Anderer Weg (ungetestet):
Delphi-Quellcode:
hMenu := GetMenu(WindowHandle);
hPopup := GetSubMenu(hMenu); // das erste Popupmenü
idItem := GetMenuItemID(hPopup, 3); // der vierte Eintrag
PostMessage(WindowHandle, WM_COMMAND, idItem, 0);
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Menühandle einer fremden Anwendung ermitteln?

  Alt 24. Aug 2006, 06:39
Vielen Dank Volker. Dein zweiter Lösungsansatz ist perfekt.
Nur eine Kleinigkeit fehlte:
hPopup := GetSubMenu(hMenu, 0); // für das erste Popupmenü muss noch der zweite Parameter 0 übergeben werden Viele Grüße
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Menühandle einer fremden Anwendung ermitteln?

  Alt 24. Aug 2006, 06:58
Zitat von hitzi:
Nur eine Kleinigkeit fehlte: ...
Sorry - bin in letzter Zeit immer etwas gehetzt (zu viel Arbeit, zu wenig Zeit).
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Menühandle einer fremden Anwendung ermitteln?

  Alt 24. Aug 2006, 07:00
Hehe ... macht doch nichts. Kann jeden mal passieren. Außerdem ist das doch kein kritischer Fehler.

Danke nochmal
Thomas
Besucht doch mal http://www.hitziger.net
  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 00:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz