AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Kontextmenü einer anderen Anwendung aufrufen
Thema durchsuchen
Ansicht
Themen-Optionen

Kontextmenü einer anderen Anwendung aufrufen

Ein Thema von nezumi · begonnen am 28. Okt 2006 · letzter Beitrag vom 31. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
nezumi

Registriert seit: 20. Apr 2006
Ort: Berlin
56 Beiträge
 
#1

Kontextmenü einer anderen Anwendung aufrufen

  Alt 28. Okt 2006, 22:10
Nabend allerseits,

In einem Programm erscheint ein Kontextmenü, wenn man innerhalb eines bestimmten Fensters im Programm rechts klickt. Dann kann man verschiedenes auswählen, unter anderem "alles markieren".

Dies möchte ich gerne durch ein Delphi-Programm erledigen lassen. Kann mir jemand einen Tipp geben, wie man das macht?

(Wie man das andere Programm aufruft usw, weiß ich. Es geht mir nur darum, wie man auf das Kontextmenü des Programms zugreift und dort was auswählt)

Gruß,
nezumi
- Eddy the Eagle unter den Programmierern -
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Kontextmenü einer anderen Anwendung aufrufen

  Alt 28. Okt 2006, 22:13
Sende dem Fenster doch nen Rechtsklick.
Markus Kinzler
  Mit Zitat antworten Zitat
nezumi

Registriert seit: 20. Apr 2006
Ort: Berlin
56 Beiträge
 
#3

Re: Kontextmenü einer anderen Anwendung aufrufen

  Alt 28. Okt 2006, 22:17
Hallo mkinzler,

danke für die schnelle Antwort. Hört sich jetzt blöd an, aber wie sende ich dem Fenster ein Rechtsklick?

Was mir aber noch schleierhafter ist: Wie kann ich dann aus dem Kontextmenü etwas auswählen?

Gruß,
nezumi
- Eddy the Eagle unter den Programmierern -
  Mit Zitat antworten Zitat
DocE

Registriert seit: 25. Mär 2004
108 Beiträge
 
#4

Re: Kontextmenü einer anderen Anwendung aufrufen

  Alt 28. Okt 2006, 22:21
N'Abend nezumi,

wenn es z.B. um sowas wie "Alles markieren" geht, würde ich den Tastaturbefehl STRG+A senden (ist einfacher)...

Oder geht es Dir darum, wie das allgemein geht?

Grüsse
...Doc
  Mit Zitat antworten Zitat
nezumi

Registriert seit: 20. Apr 2006
Ort: Berlin
56 Beiträge
 
#5

Re: Kontextmenü einer anderen Anwendung aufrufen

  Alt 28. Okt 2006, 22:27
Hallo DocE,

Gute Idee, wenn ich es anders nicht hinbekomme, werde ich es so versuchen. Das Problem ist nur, dass mir mit Strg+A viel zu viel markiert wird. Wenn ich rechts klicke und dann "alles markieren" auswähle, markiert er mir genau das was ich haben will.

(Außerdem würde ich auch gerne mal kapieren, wie das grundsätzlich geht...)

Gruß,
nezumi
- Eddy the Eagle unter den Programmierern -
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Kontextmenü einer anderen Anwendung aufrufen

  Alt 28. Okt 2006, 22:30
Gibt es für "Alles markieren" im Kontextmenü auch einen Shortcut?
Markus Kinzler
  Mit Zitat antworten Zitat
nezumi

Registriert seit: 20. Apr 2006
Ort: Berlin
56 Beiträge
 
#7

Re: Kontextmenü einer anderen Anwendung aufrufen

  Alt 28. Okt 2006, 22:37
Zitat von mkinzler:
Gibt es für "Alles markieren" im Kontextmenü auch einen Shortcut?
Nein, leider nicht...
nezumi
- Eddy the Eagle unter den Programmierern -
  Mit Zitat antworten Zitat
nezumi

Registriert seit: 20. Apr 2006
Ort: Berlin
56 Beiträge
 
#8

Re: Kontextmenü einer anderen Anwendung aufrufen

  Alt 29. Okt 2006, 09:26
Hi all,

da das scheinbar schwierig ist mit dem Kontextmenü (habs die halbe Nacht erfolglos versucht), wollte ich es so machen, dass einfach alles markiert wird. Aber auch das klappt nicht.

Um dem Fehler auf den Grund zu gehen, habe ich ein einfaches Prog geschrieben, welches in ein geöffnetes Notepad die Buchstaben "ABC" reinschreibt und dann alles markiert.

Delphi-Quellcode:
 
procedure TForm1.Button6Click(Sender: TObject);
var
  wnd, wnd2 : HWND;
  i : Integer;
  s : string;
begin
  wnd := FindWindow('notepad',nil);
  if wnd <> 0 then begin
    wnd2 := FindWindowEx(wnd,0,'Edit',nil);
    s := 'ABC';
    For i := 1 to Length(s) do begin
    SendMessage(wnd2, WM_CHAR, Word(s[i]), 0) end;
    BringWindowToTop(wnd);

    SendMessage(wnd2, WM_KEYDOWN, VK_CONTROL , 0);
    SendMessage(wnd2, WM_KEYDOWN, Ord('A'), 0);
    SendMessage(wnd2, WM_KEYUP, Ord('A'), 0);
    SendMessage(wnd2, WM_KEYUP, VK_CONTROL, 0);

  end;
end;
Das Reinschreiben der Buchstaben klappt, aber markiert wird nichts. Was mach ich falsch? Wie sendet man ein "Strg+A" an eine andere Anwendung?

Gruß,
nezumi
- Eddy the Eagle unter den Programmierern -
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

Re: Kontextmenü einer anderen Anwendung aufrufen

  Alt 29. Okt 2006, 09:43
Zitat von nezumi:
Hi all,

da das scheinbar schwierig ist mit dem Kontextmenü (habs die halbe Nacht erfolglos versucht), wollte ich es so machen, dass einfach alles markiert wird. Aber auch das klappt nicht.

Um dem Fehler auf den Grund zu gehen, habe ich ein einfaches Prog geschrieben, welches in ein geöffnetes Notepad die Buchstaben "ABC" reinschreibt und dann alles markiert.

Delphi-Quellcode:
 
procedure TForm1.Button6Click(Sender: TObject);
var
  wnd, wnd2 : HWND;
  i : Integer;
  s : string;
begin
  wnd := FindWindow('notepad',nil);
  if wnd <> 0 then begin
    wnd2 := FindWindowEx(wnd,0,'Edit',nil);
    s := 'ABC';
    For i := 1 to Length(s) do begin
    SendMessage(wnd2, WM_CHAR, Word(s[i]), 0) end;
    BringWindowToTop(wnd);

    SendMessage(wnd2, WM_KEYDOWN, VK_CONTROL , 0);
    SendMessage(wnd2, WM_KEYDOWN, Ord('A'), 0);
    SendMessage(wnd2, WM_KEYUP, Ord('A'), 0);
    SendMessage(wnd2, WM_KEYUP, VK_CONTROL, 0);

  end;
end;
Das Reinschreiben der Buchstaben klappt, aber markiert wird nichts. Was mach ich falsch? Wie sendet man ein "Strg+A" an eine andere Anwendung?

Gruß,
1. Du kannst dir die Schleife sparen wenn du die API CopyMemory verwendest und den String komplett sendest.
2. Du mußt die Applikation erst aktivieren
3. Dann mit Sendkeys (STRG+A) den ganzen Text auswählen.

gruß
  Mit Zitat antworten Zitat
nezumi

Registriert seit: 20. Apr 2006
Ort: Berlin
56 Beiträge
 
#10

Re: Kontextmenü einer anderen Anwendung aufrufen

  Alt 29. Okt 2006, 09:51
Hallo Emil,

vielen Dank für Deine Antwort. Leider versteh ich nur Bahnhof...

Könntest Du das bitte etwas genauer beschreiben oder vielleicht ein Code-Beispiel schreiben (insbes. zu Punkt 2 und 3)? Würde mir sehr helfen...

Thanx,
nezumi
- Eddy the Eagle unter den Programmierern -
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11: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