![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
処理を自動化を考えていて、特定文字(例えばプロプトや、yes/noを聞いてくるような場合)を受信するのを待ち、そのプロンプトが返ってきたら、次に移る・・・・というような感じにしたいのです。
他言語での例を言うと、teratermマクロの中の「wait関数」みたいな感じに・・
wait "login"
とかして、loginが表示されるのを待って、ユーザー名を送信
wait "Password"
とかでパスワードを求められたら、パスワードを送信とかしたいのですが、出来ますでしょうか?
No.1ベストアンサー
- 回答日時:
Indyのデモを下記のように変更すればUsernmae:という文字列を
受信したときだけ、ユーザー名を自動的に入力します。
複数コマンドに対応するには、TStringListなどを使えば
簡単に対応できます。
procedure TfrmTelnetDemo.IdTelnetDemoDataAvailable(Sender: TIdTelnet;
const Buffer: String);
const
CR = #13;
LF = #10;
var
Start, Stop : Integer;
i : Integer; //追加
s,rev : string; //追加
begin
if Memo1.Lines.Count = 0 then
Memo1.Lines.Add('');
Start := 1;
Stop := Pos(CR, Buffer);
if Stop = 0 then
Stop := Length(Buffer) + 1;
while Start <= Length(Buffer) do begin
Memo1.Lines.Strings[Memo1.Lines.Count - 1] :=
Memo1.Lines.Strings[Memo1.Lines.Count - 1] +
Copy(Buffer, Start, Stop - Start);
rev := Copy(Buffer, Start, Stop - Start); //追加
if Buffer[Stop] = CR then begin
Memo1.Lines.Add('');
end;
Start := Stop + 1;
if Start > Length(Buffer) then
Break;
if Buffer[Start] = LF then
Start := Start + 1;
Stop := Start;
while (Buffer[Stop] <> CR) and (Stop <= Length(Buffer)) do
Stop := Stop + 1;
end;
//ここで受信が終了しているのでコマンドを送信
if Pos('Username:',rev) > 0 then begin //追加
s := 'hogehoge'; //追加
for i := 1 to length(s) do //追加
IdTelnetDemo.SendCh(s[i]); //追加
IdTelnetDemo.SendCh(#13); //追加
//ここまで
end;
end;
おお・・
こんな感じに書けばいいんですね。
大変参考になりました。
やっと、プログラムの続きにいけます.
ありがとうございましたm(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- テレビ テレビが映るまで3~5分かかります 8 2023/04/11 09:47
- 英語 be sorry for doingとbe sorry to have doneの意味の違いについて 2 2023/06/09 13:57
- 英語 決意表明の"be going to"と意志の"will"の違いについて 6 2023/04/11 23:04
- PHP php ログイン 1 2022/11/01 00:24
- Yahoo!メール ぷららメールの送受信が出来なくなった 2 2023/07/16 11:48
- その他(プログラミング・Web制作) ポケコンの文字移動が上手くできない… 3 2022/04/25 01:34
- その他(セキュリティ) Googleのログイン失敗しました 1 2023/01/01 23:53
- サーバー 接続・ログインはできているのにメールが送信できない 2 2022/06/27 15:03
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- その他(メールソフト・メールサービス) Thunderbirdのメール送信ができません 1 2022/10/28 16:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UDP受信時の通信異常検知について
-
Outlookの「受信日時」「件名」...
-
シリアル通信時のデータ受信方法
-
TCP/IP のパケットの分断と結合...
-
無線LAN、SIFSについて
-
Outlookの「受信日時」「送信者...
-
C#にてCTI。RS232Cの受信と送信...
-
パソコンに詳しい方教えて下さ...
-
Windows上のファイル操作の履歴...
-
sendmail .ユーザ名.popとユー...
-
バッチファイルでディレクトリ...
-
バックアップ
-
複数のテキストファイルの特定...
-
指定ファイルをFTPで自動アップ...
-
cronからtarで圧縮しようとする...
-
SystemWalker Centric Manager...
-
フォルダへのコピー時に重複に...
-
sftp時の公開鍵認証
-
BIND9 nsupdateができない
-
Lhaplusが発したと、みられるエ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Outlookの「受信日時」「件名」...
-
TCP/IP のパケットの分断と結合...
-
RS232cを用いた送信プログラム
-
UDP受信時の通信異常検知について
-
ASP.NET C#でPOST受信
-
シリアル通信時のデータ受信方法
-
Outlookの「受信日時」「送信者...
-
TCPでパケットロス?
-
TCPのプログラミングで質問…と...
-
recv関数の戻り値について
-
DHCPOFFERの受信について
-
msgrcv( )で領域破壊?
-
パケット受信 recvfrom( )につ...
-
「TCPは全二重可能」の意味
-
C#にてCTI。RS232Cの受信と送信...
-
CRC-CCITTに関しての仕様とサン...
-
MTUで!!
-
PC98で232c送信winndowで受信で...
-
VB2010で、シリアル通信の方法...
-
winsockを使ったTCP及びUDP通信...
おすすめ情報