別のアプリケーションがビジーかどうかを確認するにはどうすればよいですか?
テキストをコンソールに送信するプログラムがあります。送信するテキストには #13 文字 (例: ls#13cd documents#13dir
) が含まれています。言い換えれば、一度に多くのコマンドを送信したいのですが、コンソールはそれらを 1 つずつ処理します。文字ごとにテキストを送信しています。場合によっては、コンソールで実行されるのはls
とcd documents
. おそらくこれは、コンソールがビジー状態であっても、プログラムが文字を送信し続けているためだと思います。この場合、コンソールは着信文字を受信しません。
これは私のコードです:
procedure TForm1.SendTextToAppO(Str: String; AHandle: Integer);
var
iWindow, iPoint, i: Integer;
SPass: PChar;
sList: TStringList;
begin
sList := TStringList.Create;
ExtractStrings([#13],[' '],PChar(Str),sList);
iWindow := AHandle;// AHandle is the handle of the console
iPoint := ChildWindowFromPoint(iWindow, Point(50,50));
for i:=0 to sList.Count-1 do begin
SPass := PChar(sList[i]);
try
while(SPass^ <> #$00) do begin
SendMessage(iPoint,WM_CHAR,Ord(SPass^),0);
Inc(SPass);
end;
SendMessage(iPoint,WM_KEYDOWN,VK_RETURN,0);
except
// do nothing;
end;
end;
end;
Delphi 7 を使用しています。