如何检查另一个应用程序是否正忙?
我有一个将文本发送到控制台的程序。我将发送的文本包含#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;
我正在使用德尔福 7。