Ich stehe zur Zeit vor dem gleichen Problem. Eine Lösung wäre diese hier:
Delphi-Quellcode:
procedure PostKeyDown(key: Byte);
begin
keybd_event(key, Mapvirtualkey(key, 0), 0, 0 );
end;
procedure PostKeyUp(key: Byte);
begin
keybd_event(key, Mapvirtualkey(key, 0), KEYEVENTF_KEYUP, 0 );
end;
TForm1.Button1Click(Sender: TObject);
...
...
wnd := FindWindowEx(0, 0, nil, 'Deine Anwendung');
if wnd <> 0 then
begin
// weil die Proc PostKeyDown kein HWND benutzt,
// muss das ZielFenster im Vordergrund stehen
SetForegroundWindow(wnd);
ShowWindow(wnd, 1);
// 1 Sek. Verzögerung, um sicher zu stellen, dass
// das ZielFenster bereit ist.
Sleep(1000);
// Jetzt die Tastenkombinationen senden...
// (= DATEI SPEICHERN)
PostKeyDown(VK_MENU);
PostKeyDown(Ord('D'));
PostKeyUp(Ord('D'));
PostKeyUp(VK_MENU);
PostKeyDown(Ord('S'));
PostKeyUp(Ord('S'));
end;
...
...
end;
Das wird dir helfen, wenn du die Abhandlung lokal durchführen willst. Ich stehe allerdings weiterhin vor dem Problem, weil meine Lösung auf einem REMOTE-PC laufen muss. Und wenn die Console geschlossen wird, funktioniert keybd_event leider nicht mehr.
Hat es vielleicht jmd fertig gebracht, mit PostMessage(wnd, WM_??????, VK_MENU, lParam) die Alt-Taste auszulösen? Ich würde mich über jede Hilfe freuen.
Gruß
Leo