Autor Beitrag
Frankieboy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65



BeitragVerfasst: Mi 12.03.08 13:25 
Hallo,

ich bin gerade dabei, die VC DosCommand etwas zu verändern...

Ich stelle diese Frage in die API-Section, da das Thema mehr damit zu tun hat, als mit der VCL)

DosCommand bietet die Möglichkeit, Eine Kommandozielenanwendung unsichtbar zu starten und liest den Fenstertext durch eine Pipe in eine StringList aus. Außerdem kann man durch eine zweite Pipe Input (also Text) an die Konsole senden.
Da das für meine Belange aber nicht ausreicht, will ich eine zusätzliche procedure einbinden, um einen String durch mehrmaliges, simuliertes Tastendrücken an dieses Fenster zu senden.


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure SendLineDirect(ALine: String; EndOfLine: Boolean);
begin
  for i := 0 to length(Aline) do
  begin
    keybd_event(?,?,0,0);
    keybd_event(?,?,KEYEVENTF_KEYUP,0);
  end;
  if EOL then
  begin
    keybd_event(VK_RETURN,?,0,0);
    keybd_event(VK_RETURN,?,KEYEVENTF_KEYUP,0);
  end;
end;


Zusätzliche Infos:
TDosCommand startet einen eigenen Thread TDosThread (Typ TThread), sobald man DosCommand.Execute aufruft.
Das zu TDosThread zugehörige Fenster ist standardmäßig minimiert (SW_HIDE);

Also meine Frage
Wie stelle ich sicher, dass die Keypresses auch wirklich an das Fenster von TDosThread gesendet (und ausgewertet) werden? Es soll weiter verborgen bleiben und nicht in den Vordergrund!

Vielen Dank schon mal im Voraus!

Frankie