Mehrere Tastendrücke an BELIEBIGE Anwendung senden

Hallo Delphi-Freaks

wie kann man folgende Tastendrücke an eine BELIEBIGE
Anwendung (also zum Beispiel NOTEPAD.EXE) senden

Alt-TAB, Strg-V, Enter

ich bin für jeden kleinen Hinweis dankbar

viele Grüße

Stefan Ludwig

Hi Stefan,

das geht mit
SendMessage(HWnd,WM_KEYDOWN,virtualKeyCode,KeyData);

HWnd ist das Fenster-Handle von z.B. dem NotePad.
Falls Du VisualStudio hast, kannst Du das mit dem SpyXX.exe bekommen.

Wenn Du allerdings zur Laufzeit das richtige Handle ausfindig machen willst, mußt Du die Liste der laufenden Applikationen unter Windows durchsuchen. Dazu gibt´s einen API-Call den ich jetzt leider nicht mehr weiss,

Manfred

wie kann man folgende Tastendrücke an eine BELIEBIGE
Anwendung (also zum Beispiel NOTEPAD.EXE) senden

Alt-TAB, Strg-V, Enter

ich bin für jeden kleinen Hinweis dankbar

viele Grüße

Stefan Ludwig

Wenn Du allerdings zur Laufzeit das richtige Handle ausfindig
machen willst, mußt Du die Liste der laufenden Applikationen
unter Windows durchsuchen. Dazu gibt´s einen API-Call den ich
jetzt leider nicht mehr weiss,

HWND FindWindow(
LPCTSTR lpClassName, // address of class name
LPCTSTR lpWindowName // address of window name
);

oder einfach alle Fenster durchsuchen (ist recht langsam)

HWND GetNextWindow(
HWND hWnd, // handle of current window
UINT wCmd // direction flag
);

Mehr wie immer in der win32-help
Grüße
Daniel

Hallo Stefan,

Wenn ich Dich richtig verstanden habe, geht es Dir vor allem um die Tastaturcodes für Alt-TAB, Strg-V, Enter, weniger um das „wie geht’s denn überhaupt“. Zu diesen Tastaturcodes durchsuche doch mal den Source-Code der VCL nach „VK_“, z.B. die Datei „ComCtrls.pas“ enthält da einiges.

Zum Thema „wie geht’s denn überhaupt“ fand ich unter
http://www.swissdelphicenter.ch/de/index.php
folgendes Beispiel (enthält auch die ENTER-Taste).

procedure Form1.ButtonClick(Sender: TObject);
var
wnd : HWND;
i : Integer;
s : string;
begin
wnd := FindWindow(‚notepad‘,nil);
if wnd 0 then
begin
wnd := FindWindowEx(wnd,0,‚Edit‘,nil);
// Write Text in Notepad.
// Text ins Notepad schreiben.
s := ‚Hallo‘;
For i := 1 to Length(s) do
SendMessage(wnd, WM_CHAR, Word(s[i]), 0);
{Simulate Return Key:}
PostMessage(wnd, WM_KEYDOWN , VK_RETURN, 0);
{Simulate Space:}
PostMessage(wnd, WM_KEYDOWN , VK_SPACE, 0);
end;
end;

Gruß Dieter