AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Menüpunkt eines fremden Programms betätigen
Thema durchsuchen
Ansicht
Themen-Optionen

Menüpunkt eines fremden Programms betätigen

Ein Thema von Cuchulainn · begonnen am 19. Mär 2004 · letzter Beitrag vom 19. Mär 2004
Antwort Antwort
Cuchulainn

Registriert seit: 26. Aug 2003
182 Beiträge
 
Delphi 5 Enterprise
 
#1

Menüpunkt eines fremden Programms betätigen

  Alt 19. Mär 2004, 09:29
Guten Morgen

jetzt knoble ich gerade an folgendem Problem: Ich möchte, dass mein Programm in einer fremden Anwendung automatisch einen Menüpunkt betätigt, und zwar im Hauptmenü den Punkt "Datei" und darunter den Punkt "Beenden". Das Handle des Hauptmenüs und des Popup-Menüs "Datei" habe ich.

Delphi-Quellcode:
var hWindow: HWND;
    hMenue, hDatei: HMENU;

(...)

hWindow := FindWindow(nil, 'Biss+');
hMenue := GetMenu(hWindow);
if hMenu(hwindow) <> 0 then
begin
  hDatei := GetSubMenu(hMenue, 0);
  if hDatei <> 0 then
  begin
    // Hier will ich jetzt den Menüpunkt "Beenden" auswählen und betätigen
  end;
end;
Wie komme ich denn jetzt an diesen Menüpunkt und wie kann ich ihn betätigen?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Menüpunkt eines fremden Programms betätigen

  Alt 19. Mär 2004, 11:05
Hi,

Warum schliesst du jene Anwenung nicht einfach per WM_CLOSE?
Sollte auf dasselbe hinauskommen.
Thomas
  Mit Zitat antworten Zitat
Cuchulainn

Registriert seit: 26. Aug 2003
182 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Menüpunkt eines fremden Programms betätigen

  Alt 19. Mär 2004, 11:06
Ich schreibe ein Testprogramm, das unter anderem das Menü eines anderes Programms testen soll. Ich muss auch andere Menüpunkte noch ansprechen können. Ich habe das Problem also nicht nur beim Menüpunkt "Beenden".
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Menüpunkt eines fremden Programms betätigen

  Alt 19. Mär 2004, 11:20
Ein Klick auf ein Menü generiert in der MessageLoop des Programmes eine WM_COMMAND Nachricht. Siehe dazu auch meine NonVCL Tutorials.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Cuchulainn

Registriert seit: 26. Aug 2003
182 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: Menüpunkt eines fremden Programms betätigen

  Alt 19. Mär 2004, 11:22
Das habe ich mir schon gedacht. Aber wie kann ich jetzt einen bestimmten Menüpunkt ansprechen? Da brauche ich doch ein Handle, oder?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#6

Re: Menüpunkt eines fremden Programms betätigen

  Alt 19. Mär 2004, 11:26
Hi,

Habe hier ein Beispiel
in VB gefunden, um z.B bei Notepad "Datei", "Öffnen.." automatisch auszuführen.

In Delphi sieht's so aus:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  hWnd : Integer;
  hMainMenu : Integer;
  hMenu : Integer;
  MenuID : Integer;
begin
    hWnd := FindWindow('Notepad', nil);
    If hWnd <> 0 Then
    begin
      hMainMenu := GetMenu(hWnd);
      hMenu := GetSubMenu(hMainMenu, 0);
      MenuID := GetMenuItemID(hMenu, 1);
      SendMessage(hWnd, WM_COMMAND, MenuID, 0);
   end;
end;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Menüpunkt eines fremden Programms betätigen

  Alt 19. Mär 2004, 11:31
Kuck noch mal mein Edit an. Du holst dir mit GetMenuItemID die ID des Punktes und sendest dann ein WM_COMMAND an das Fenster mit der ID im LoWord des wParam und dazu benutzt du MAKEWPARAM.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Cuchulainn

Registriert seit: 26. Aug 2003
182 Beiträge
 
Delphi 5 Enterprise
 
#8

Re: Menüpunkt eines fremden Programms betätigen

  Alt 19. Mär 2004, 11:40
Es hat funktioniert. Vielen Dank.
  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 12:29 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