コマンドプロンプトにコマンドを送信


Mr.XRAY  2015-08-10 06:28:31  No: 47530

毎度スミマセン.質問ではありません.
昔,こんなスレッドあり,レスしたのですが,

[コマンドプロンプトに間接的に文字を入力するには?]
https://www.petitmonte.com/bbs/answers?question_id=3808

HDD 内を整理していたら,このスレッド終了後に作成したコードがありました.
今更ですが,検索でくる方もいると思いますので掲載しておきます.
コマンドプロンプトは起動しているものとします.

//=============================================================================
//  コマンドプロンプトに文字列を送る
//  クリップボードを利用
//  usesにClipbrdが必要
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
const
  ID_Paste = $FFF1; //65521
var
  LCmdWnd  : HWND;
  LCmdText : String;
begin
  LCmdWnd := FindWindow('ConsoleWindowClass', nil);
  if LCmdWnd = 0 then begin
    MessageBox(Handle, 'コマンドプロンプトが起動していません', '情報', MB_OK);
    exit;
  end;

  //コマンドの文字列の末尾に改行文字を追加して,クリップボードにコピー
  LCmdText := Trim(Edit1.Text) + sLineBreak;
  Clipboard.AsText := LCmdText;

  //コマンドプロンプトのウィンドウに[貼り付け]のコマンドを送る
  SendMessage(LCmdWnd, WM_COMMAND, ID_Paste, 0);
  Edit1.SetFocus;
end;

私のサイトからサンプルのプロジェクト (EXE 付き) がダウンロードできます.

[490_コマンドプロンプトを ShellExecute 関数で起動]
http://mrxray.on.coocan.jp/Delphi/plSamples/490_CmdPrompt1.htm


Mr.XRAY  2015-08-10 16:16:25  No: 47531

動作確認は,以前の質問の時と違い,サイトの記事と同じです.
Windows 7 U64(SP1) + Delphi XE(UP1) Pro です.


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加