Как проверить, занято ли другое приложение?
У меня есть программа, которая отправляет текст на консоль. Текст, который я отправлю, содержит символ # 13 (например, ls#13cd documents#13dir
). Другими словами, я хочу отправить много команд одновременно, и консоль будет обрабатывать их одну за другой. Я отправляю текст за символом. Иногда консоль выполняет только 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.