AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Menüeinträge "virtuell" anklicken
Thema durchsuchen
Ansicht
Themen-Optionen

Menüeinträge "virtuell" anklicken

Ein Thema von MaOfDe · begonnen am 15. Aug 2004 · letzter Beitrag vom 17. Aug 2004
Antwort Antwort
MaOfDe

Registriert seit: 3. Jan 2004
Ort: Berlin
73 Beiträge
 
Delphi 6 Personal
 
#1

Menüeinträge "virtuell" anklicken

  Alt 15. Aug 2004, 12:24
Alo und salut!
Hab grad ein Programm geschrieben, das das Hauptmenü eines ausgewählten Fensters auflistet.
Die Idee dahinter ist sone Art Videorecorder für WinTV2000, sodass man nur Ort und Zeit eingeben müsste, und das eigene Programm automatisch auf die entsprechenden Menüeinträge "Start Recording" und "Stop Recording" klickt.
Leider fehlt mir zurzeit noch das Know-How dazu, auf einen Menüeintrag per SendMessage zu klicken . Zudem wär es auch nützlich, wie man auch die ganzen andren in der Anwendung herumschwirrenden PopUpMenus auflisten kann.
Kennt sich jemand von euch aus?!
Angehängte Dateien
Dateityp: zip menumessages.zip (8,6 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Menüeinträge "virtuell" anklicken

  Alt 15. Aug 2004, 12:28
Zitat von MaOfDe:
Leider fehlt mir zurzeit noch das Know-How dazu, auf einen Menüeintrag per SendMessage zu klicken.
guggst du hier ... hatt ich grad offen, aber die suche hilft sonst immer ... ^^

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
MaOfDe

Registriert seit: 3. Jan 2004
Ort: Berlin
73 Beiträge
 
Delphi 6 Personal
 
#3

Re: Menüeinträge "virtuell" anklicken

  Alt 15. Aug 2004, 12:47
THANX!!!
Scheint zu funktionieren .
Jetzt steht nur noch offen, wie ich PopUpMenus aufliste... *ausprobier**tüfftel**tüfftel*
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Menüeinträge "virtuell" anklicken

  Alt 15. Aug 2004, 13:01
Zitat von MaOfDe:
Jetzt steht nur noch offen, wie ich PopUpMenus aufliste ...
Warscheinlich garnicht, da sie nicht dauerhaft vorhanden sind. Es gibt allerdings eine methode den aufruf eines popupenmenüs abzufangen, ist aber recht kompliziert.

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
MaOfDe

Registriert seit: 3. Jan 2004
Ort: Berlin
73 Beiträge
 
Delphi 6 Personal
 
#5

Re: Menüeinträge "virtuell" anklicken

  Alt 15. Aug 2004, 21:15
Zitat:
Warscheinlich garnicht, da sie nicht dauerhaft vorhanden sind. Es gibt allerdings eine methode den aufruf eines popupenmenüs abzufangen, ist aber recht kompliziert.
Wer wird denn hier gleich pessimistisch?! Wieso kompliziert?! Wenn's ne Methode gibt, immer raus damit! Das ich jetzt etwas von der Existenz einer solchen Methode Kenntnis genommen habe, bringt mich nicht wirklich weiter, ich brauch was konkretes .
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Menüeinträge "virtuell" anklicken

  Alt 15. Aug 2004, 21:22
Ich weis nicht wie oft ich diese 3 worte heut noch in den mund nehmen will, aber egal: API/Function Hooking. Du kannst theoretisch jedes popupmenü über z.B. TrackPopupMenü (bzw. die -Ex version) abfangen. Da kannst du dann feststellen was sich im menü befindet, aber dazu musst du es erst einmal von hand aufrufen ...

Gemacht habe ich das z.B. in meinem projekt inettime, dass ich hier in der dp gepostet hab.

Diese Methode ist für dein Problem allerdings nicht gerade die beste Lösung.

Eine weitere Methode wäre z.B. die exedatei wie mit dem ResourceHacker auseinanderzunehmen, und versuchen so die menüs zu finden, was allerdings noch komplizierter und warscheinlich weniger effektiv wäre ...

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
MaOfDe

Registriert seit: 3. Jan 2004
Ort: Berlin
73 Beiträge
 
Delphi 6 Personal
 
#7

Re: Menüeinträge "virtuell" anklicken

  Alt 16. Aug 2004, 20:47
Ich werd' mal sehen, was sich mit diesem Wissen anfangen lässt.
Den ResHacker hab ich schon vorher benutzt... allerdings fehlt genau das Untermenu was ich brauche, was heißt, dass einige Einträge erst zur Laufzeit erzeugt werden .
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#8

Re: Menüeinträge "virtuell" anklicken

  Alt 16. Aug 2004, 20:52
Wie gesagt, die einzig mir bekannte Methode wäre einmaliges manuelles aufrufen der popupmenüs, die dann über den hook registriert und geloggt werden.

Die Methode die dem ResourceHacker ähnlich ist, ist eigentlich keine alternative, da sich hier noch viel mehr probleme auftun, angefangen von dem problem exepacker, bis hin zum auseinandernehmen des programms.

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
MaOfDe

Registriert seit: 3. Jan 2004
Ort: Berlin
73 Beiträge
 
Delphi 6 Personal
 
#9

Re: Menüeinträge "virtuell" anklicken

  Alt 17. Aug 2004, 16:49
Letztendlich brauch ich ja nur die ID von dem benötigten Menüeintrag, da wäre ResHacker schon die ideale Lösung gewesen, wenn das Menü tatsächlich in den Resourcen der EXE abgelegt gewesen wäre...
So könnte man, um für dieses Thema einmal zu rekapitulieren, einfach folgendes machen:
SendMessage(<Fenster-Handle>, WM_COMMAND, <Menüeintrags-ID>, 0); @c113plpbr: Kennst du einige API/Function-Hooking-Tutorials? Will mich hier nicht kaputtsuchen ^^. Solange eine Lösung zu existieren scheint, ist's mir egal, wie schwierig es sein mag.
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#10

Re: Menüeinträge "virtuell" anklicken

  Alt 17. Aug 2004, 20:52
So richtige Tutorials kenn ich nicht, ich hab das meiste aus beispielen gelernt. Ein beispiel, wie gesagt, findest du hier in der dp in meinem 'programm' inettime. In diesem programm wird die funktion trackpopupmenu abgefangen, und somit alle damit angezeigten popupmenüs ... und das sind fast alle ... ^^, bis auf die, die per trackpopupmenuex aufgerufen werden, aber das kann man sich davon auch noch ableiten ... ich habe für das hooken der funktionen madshi's madCodeHook library verwendet, die für den nicht-kommerziellen gebrauch kostenlos ist. Diese Library ist recht gut, und es sind auch ne menge beispiele dabei.

Ich hoffe, das hilft dir weiter, und ich denke, es ist die einzige, wirklich einigermaßen sinnmachende, lösung für dein problem. Wenn du es ned hinkriegst, kannste mich ja kontaktieren, per pn, oder email, und wenns sein muss, auch per icq ... ^^ ...

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  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 02:37 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