2009年11月19日木曜日

急がば回れ?秀丸エディタ起動コード作成







今回の記事は、Windows Power Shellにて秀丸エディタなどのプログラムの起動について書かせて頂きます。

Windows Power Shellにて秀丸エディタを起動しようと思い、「hidemaru」と入力したところ、起動せず
パスを通しても起動せず。ありゃりゃ。
Invoke-Itemコマンドを使えば起動出来るのですが、同時に読み込むファイル名を指定出来ないのでイマイチ。

これは自分でコードを組むしかないか・・・。と作ってみました。
急がば回れといいますが、その通りになってしまいました。

まず、ファイル名から、フルパスを求める関数を作りました。
関数名=GetFullPath()
存在しないパスを指定されたら、とりあえずカレントディレクトリとファイル名でパスを作り直す機を実装してあります。Windows Power Shellには、Test-PathやConvert-Pathなどのパス関係の便利なコマンドが沢山あるので楽しいですよ。ちなみにマイクロソフトではコマンドをコマンドレットと呼称してますね。

これを使って、外部プログラムを起動する処理を作りました。
関数名=Go_Process()
外部プログラムを起動するのは、実は結構大変。
System.Diagnostics.Process(ダイアグナスティック=診断)というクラスをインスタンス化するのですが、単体ではあまり使えません。
これとは別立てで、System.Diagnostics.ProcessStartInfoという、実行プログラムの情報をセットするクラスをインスタンス化して、こっちに情報をセットしてから、.ProcessのStartInfoプロパティに渡してあげないといけないんですね。
回りくどいですが、これによって、プログラム名ばかりか、同時に読み込むファイルなどの引数情報や、プ呼び出し元を好きな時間待機させる機能まで実現できるので、業務プログラムなんかには絶大な威力を発揮します。

で、作りました。

hidemaru 同時に読み込むファイル名

で秀丸エディタが起動可能に。

ちなみに、
hidemaru 同時に読み込むファイル名 待機時間
で、秀丸を終了するまでコマンドシェルを待機させられます。待機時間-1で秀丸を終了するまでずろっとコマンドシェルを待機させられます。
秀丸では意味が薄いですが、Go_Process()関数は汎用的に使えるので、呼び出したプログラムが起動するまで待機という機能はいつか役立つのではないかと思います。

しかし、それにつけてもAspire 1410は便利だなぁ。
しみじみ。
寒い時でもコタツや布団の中で色々できるし、モバイルなのでクルマの中とか出先とかで使えるし。ただ、盗難や破損に最大限の注意をしなきゃあならないです。
念のため、重要情報はAspireの中には入れてません。
自宅のNASの中に格納してあるんですけれど、だからって注意を怠ってはいけないですね。