HSPでコマンドプロンプトを制御する
1.概要 最近は、Excel VBAやPythonなどによる自動化というキーワードを良く耳にしますが、昔からある自動化で最も安定性が あり、比較的単純な手順の記述とコマンド発行といったコマンドプロンプトによる操作およびバッチファイルによる自動処理 があります。システムの運用管理者やネットワーク管理者の人達も多く利用されています。 筆者も一時期は、良く利用していましたがGUIの操作に慣れ過ぎて最近は利用する機会も減ってきています。 今回は、HSP言語によるコマンドプロンプトを操作して外部から文字列(コマンド)を送信する方法を模索して見たいと思います。 2.コマンドプロンプトに文字列送信 コマンドプロンプトにGUI画面上からキー入力された文字列を送信する方法について説明します。 まず、概略の処理の流れを整理します。 (1) コマンドプロンプトを起動させる。 ただし、環境依存を無くすため環境変数 'comspec' より取得したパス名を、 exec 命令のp1パラメータとして渡す。 (2) 入力ボックス等より入力したコマンド( テキスト文字列 )をクリップボードにコピーする。 (3) コマンドプロンプト画面をアクティブにする。 (4) クリップボードよりコマンドを貼り付ける。 整理すると、これらの処理を実現させるためには、 ・環境変数'comspec'よりパス名を取得する処理 ・クリップボードにテキスト文字列をコピーする処理 ・任意の画面をアクティブにする処理 ・クリップボードよりテキスト文字列を貼り付ける処理 となります。ここで、一番難しいのはコンソールに対してクリップボードよりテキスト文字列を貼り付ける処理です。 [ ALT ]+[ SP ]+[ e ]+[ p ]+[ Enter ] キーという操作を keybd_event APIを 利用 して送り、貼り付け処理をしても良いのですが、メニューの操作をエミュレートするので、 [ ALT ]+[ SP ] で メニュー がポップアップし、次に [ e ] で編集がクリックされ、更に [ p ]+[ Enter ] キーといった流れとなって メニューの 操作が丸見えとなります。もちろん、動作的にも遅くスマートではありません。 コマンド