Einzelnen Beitrag anzeigen

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