Select sjis if the characters are not shown properly.

実行プログラム、オプションを指定する myarghelper.exe

$Filename: index.txt $
$Lastupdate: 2018-01-04 16:53:41 $

流出予測研究所 openpage へ

このディレクトリには、cbar が作成した myarghelper.exe に関する情報を記載します。

myarghelper.exe はフリーソフトです。自由にご使用ください。なお,著作権は作者である 椎葉充晴 が保有しています。

このソフトウェア myarghelper.exe を使用したことによって生じたすべての障害・損害・不具合等に関しては、私も流出予測研究所も一切の責任を負いません。各自の責任においてご使用ください。

[TopHdngList] [BodyStart] [Top] [End]

CONTENTS   CONTENTS が閉じられているときでも [Contents] ボタンは有効です。
CONTENTS が閉じられているときに、アウトライン見出しのところに表示 されている [Contents] ボタンをクリックすると、 CONTENTS を表示して、 そのアウトライン見出しに対応している CONTENTS の中の見出しにジャンプします。
この後、CONTENTS は表示されたままになります。
CONTENTS 内の各行の最後に示されている数字は、 そのアウトライン見出し行が文書ファイルの何行目にあるかを表しています。

[ContentsTop]
TOP HDNG LIST ALL HEADING LIST NOTE LIST

[Close TOP HEADING LIST]

ALL HEADING LIST ■はアウトライン見出しのタイトル □はそれ以外
22*1 ■実行プログラム、オプションを指定する myarghelper.exe
283*2 ■設定ファイル(拡張子が .ahp のファイル)の書き方
329*3 ■設定ファイルの記述例
396*4 ■//help
403*5 ■アイコンの変更
418*6 ■ソースプログラム

[Close ALL HEADING LIST]

NOTE LIST
Note の一覧: Note はありません。

[Close NOTE LIST]

[Top] [End] [ContentsTop]

[CTop] [Contents][TopHdngList][][Next][SameLvlPrev][Child][SameLvlNext][Parent][Top][End]

1 実行プログラム、オプションを指定する myarghelper.exe

実行プログラム myarghelper.exe
./myarghelper.exe

実行プログラム myarghelper.exe の解説文書
./myarghelper.exe.txt

myarghelper.exe は ArgHelper.exe の機能を拡張するものです。

ArgHelper.exe は、Gentaro Muramatsu さんが作成したプログラムで、myarghelper.exe はその機能を参考にして作成したものです。

◇ ArgHelper.exe の概要

ArgHelper.exe は、Gentaro Muramatsu さんが作成したもので、C++ を使って作成されていて、ソースも公開されています。

  ArgHelper.exe 
  //    Copyright (C) 2000, Gentaro Muramatsu

ArgHelper.exe は、それを hoge.exe のような任意の基幹部分の名前 (この例では hoge) を持ち、拡張子が .exe のファイル名を持つファイルに複写して使用します。

つまり、

  $ copy ArgHelper.exe hoge.exe

のようにして、hoge.exe を作成します。

以下、hoge.exe をこのようにして作成したものとして、使い方を説明します。

hoge.exe (元は、ArgHelper.exe) が実行されると、自分の名前のhoge を基幹部分とし、拡張子が .ini のファイル、つまりhoge.ini を「設定ファイル」として読み込みます。hoge.ini は、hoge.exe と同じディレクトリに置かないといけません。

設定ファイルはつぎのような約束に従って、ユーザ(ArgHelper.exe をhoge.exe という名前でコピーした人) が作成します。

  (形式)
  1行目: 実行ファイル名 (絶対パス指定しか試していません)
        (例えば C:¥Windows¥notepad.exe)
  2行目: コマンドラインオプション
        (例えば /P)

実行ファイル hoge.exe を実行すると,設定ファイル hoge.ini の1行目で指定したファイルが実行されます.このとき,設定ファイル hoge.ini の2行目に書いたオプションと実行時に与えられたオプションを空白1つで接続したものが引数として与えられます。hoge.ini の内容が

  C:¥Windows¥notepad.exe
  /P

であるとして、

  $ hoge.exe foobar.txt

とすると、

  $ C:¥Windows¥notepad.exe /P foobar.txt

としたように動作します。

◇ myarghelper.exe で変更した機能/追加した機能

myarghelper.exe は、C# を使って作成しました。

(1) 設定ファイルの拡張子を .ahp にしました。

ArgHelper.exe の場合は拡張子が、.ini でしたが、.ini という拡張子は良く使われるので、.ahp を採用しました。ArgHelPer のAHP です。

foo.exe と foo.ahp があれば、foo.exe が

  $ copy myarghelper.exe foo.exe

として作られたということがすぐ分かるという利点があります。

(2) バージョン番号を表示するオプションを設けました。

  $ myarghelper.exe /myarghelperversion

とすると、myarghelper.exe のバージョン番号が表示されます。

当然ながら、myarghelper.exe を copy して作成された実行ファイル、例えば、

  $ copy myarghelper.exe hoge.exe

として作成された hoge.exe に対して

  $ hoge.exe /myarghelperversion

とすると myarghelper.exe のバージョン番号が表示されます。

(3) Windows プログラムにしました。

myarghelper.exe は Windows プログラムです。コンソールプログラムではありません。

コンソールプログラムでは、myarghelper.exe の機能は、バッチファイルでおおむね実現できます。

(4) 設定ファイル(拡張子 .ahp を持つファイル)の仕様の変更。

myarghelper.exe は、ArgHelper.exe と同じ機能を持ちますが、少し機能を拡張しました。

ArgHelper.exe と同様に、myarghelper.exe を hoge.exe のように、任意の「基幹部分」の名前を持つファイルに複写して使用します。

  $ copy myarghelper.exe hoge.exe

こうして複写した hoge.exe があるディレクトリに「設定ファイル」を置きます。ただし、設定ファイルはただひとつではなくて、(あれば)複数の設定ファイルから実行時に選択するようにしました。

設定ファイルの選択のルールはつぎのようです。

  1. まず、最初に、実行ファイルがあるディレクトリと同じディレクトリに、

      基幹部分の名前 + "For" +  %COMPUTERNAME% + ".ahp"

    という名前のファイルがないかを探します。

    myarghelper.exe を hoge.exe という名前で複写した場合で、 COMPUTERNAME が KUMANO の場合、

      "hoge" + "For" + "KUMANO" + ".ahp" -> hogeForKUMANO.ahp

    です。

    この形のファイルがあれば、それが「設定ファイル」として採用されます。

    hogeForYODO.ahp があっても、%COMPUTERNAME% が KUMANO であるマシンでは、hogeForYODO.ahp は「設定ファイル」とは考えられません。

  2. 前項で述べたように %COMPUTERNAME% が含まれる形の名前の「設定ファイル」がない場合は、

      基幹部分の名前 + ".ahp"

    というファイルがないかを探します。

    myarghelper.exe を hoge.exe という名前で複写した場合は、

      hoge.ahp

    です。そういう名前のファイルがあれば、それを「設定ファイル」として採用します。

  3. 基幹部分の名前 + ".ahp" の形の名前のファイルもない場合は、「設定ファイル」がないということになります。

    「設定ファイル」がないと、エラーメッセージを表示する窓がポップアップします。その窓の OK ボタンを押せば、なにもせずにプログラムは終了します。

  4. hoge.exe (myarghelper.exe をコピーしたファイル) は、上述したルールにしたがって、設定ファイルを選択し、それを読み込みます。

    設定ファイルの一行目に書いてあるコマンドに、設定ファイルの二行目に書いてある引数と、hoge.exe を実行するときに渡された引数を加えて実行します。

    例えば、hoge.exe の設定ファイルの一行目に

      C:¥home¥shiiba¥bin¥foo.exe

    と書いてあって、hoge.exe の設定ファイルの二行目に

      C:¥script¥bar.uws

    と書いてあり、hoge.exe の実行時に、Hello, world. という引数を与えると、

      C:¥home¥shiiba¥bin¥foo.exe C:¥script¥bar.uws Hello, world. 

    が実行されます。

  5. 設定ファイルの一行目に、絶対パスではなくて、相対パスを使って実行するコマンドを書くことができます。

    例えば、hoge.exe の設定ファイルの一行目に

      C:¥home¥shiiba¥bin¥foo.exe

    のように書いてあるのではなくて、

      .¥foo.exe

    のように相対パスで書いてあった場合は、hoge.exe (myarghelper.exe をコピーしたファイル)は、.¥foo.exe の . を hoge.exe が置かれているディレクトリと解釈します。

    従って、hoge.exe が c:¥home¥tak¥bin にあれば、

      c:¥home¥tak¥bin¥foo.exe

    が実行されます。

  6. 設定ファイルの書き方につぎのような特別なルールを導入しました。

    設定ファイルの2行目に $(Arguments) という文字列があると、実行時に与えられた引数の全体が、$(Arguments) に置き換えられます。

    $(Arguments) を使っている場合には、$(Argument1)、 $(Argument2)、$(Argument3) を使うことはできません。

    $(Argument1) という文字列があると、実行時に与えられた引数の1番目の引数に置き換えられます。

    $(Argument2) という文字列があると、実行時に与えられた引数の2番目の引数に置き換えられます。$(Argument1) を使っていないのに$(Argument2) を使うことはできません。

    $(Argument3) という文字列があると、実行時に与えられた引数の3番目の引数に置き換えられます。$(Argument2) を使っていないのに$(Argument3) を使うことはできません。

    $(Argument4) は使うことができません。

  7. 一行目に start.exe と書いてあった場合は、引数部分を arguments に格納したとして、

       System.Diagnostics.Process.Start(arguments);

    のようにして、引数部分 arguments を関連付けによって開きます。

  8. 実行時の引数の第一引数に限り、.¥ で始まると、作業ディレクトリに置き換えられます。第一引数が "..." のように引用符号で囲まれていると、引用符号の内側の最初が .¥ で始まると、作業ディレクトリに置き換えられます。

    例えば、myarghelper.exe を runuws.exe という名前に複写して、

       PS> cd c:¥foo¥bar
       PS> runuws .¥foo.uws a b c

    のようにした場合、これは、

       PS> runuws c:¥foo¥bar¥foo.uws a b c

    のように実行したように動作します。

    (重要) 「実行時の引数の第一引数」と設定ファイルの中に書く引数とは異なることに注意してください。

  9. [2015-04-22] 第一引数に //help を指定すると、コメントファイルを start コマンドを使って表示します。

    例えば、myarghelper.exe を hoge.exe という名前で複写した場合は、

       PS> hoge //help

    とすると、コメントファイル

       hoge.exe.txt

    が、hoge.exe があるディレクトリにあれば、それを、start コマンドを使って表示します。

    第一引数に //help が指定されたときに、標準出力にコメントファイルを書き出したい気もします。しかしmyarghelper.exe は Windows プログラムであって、コンソールプログラムではないので、コンソールに出力することができません。

 

[CTop] [Contents][TopHdngList][Prev][][Next][SameLvlPrev][Child][SameLvlNext][Parent][Top][End]

2 設定ファイル(拡張子が .ahp のファイル)の書き方

設定ファイルの一行目には、実行するプログラムのフルパスまたは、start.exe という文字列です。

設定ファイルの二行目には、引数を指定します。二行目には、$(Arguments)、$(Argment1)、$(Arguments2), $(Argument3) などの置き換え指定文字列を書くことができます。

設定ファイルの行頭に # を書いてある行はコメント行として読み飛ばされます。一行目、二行目というのは、コメント行を除いて考えたときの一行目、二行目を意味しています。

Dropbox のようにクラウドとそれに同期するディレクトリにファイルを置くことができる場合、そこに

  hoge.exe
  hogeForKUMANO.ahp
  hogeForYODO.ahp
  hoge.ahp

のようなファイルを置くようにしておけば、KUMANO と YODO では、個別のマシン KUMANO, YODO 用の設定ファイルを読んでプログラムが実行され、それ以外のマシンでは、設定ファイル hoge.ahp を読んでプログラムが実行されます。

これにより、マシン毎に対応した実行条件を指定することができるようになります。例えば、

  hogeForKUMANO.ahp の一行目
    C:¥tools¥bin¥Foo-11.exe

  hogeForYODO.ahp の一行目
    C:¥tools¥bin¥Foo-12.exe

  hoge.ahp の一行目
    C:¥tools¥bin¥Foo-10.exe

となっていれば、hoge.exe を実行したとき、KUMANO、YODO、それ以外のマシンで、実際に実行されるプログラムが、C:¥tools¥bin¥Foo-11.exe、C:¥tools¥bin¥Foo-12.exe、C:¥tools¥bin¥Foo-10.exe のように切り替えられることになります。

◇ 環境変数の利用

AutoHotkey などでマシンによってインストール場所が異なっている場合には、前項で紹介した、hogeForKUMANO.ahp、hogeForYODO.ahp など、ahp ファイルの名前を利用してその違いを考慮することもできますが、マシンごとに環境変数 AutoHotkey にAutoHotkey のインストール先を指定しておいて、hoge.ahp の中に、

  hoge.ahp の一行目
    %AutoHotkey%¥AutoHotkey.exe

のように記述するという方法も利用できます。この機能は、[2016-08-02] に実現されました。

◇ バージョン文字列の表示

  $ myarghelper.exe /myarghelperversion

とすると、myarghelper.exe のバージョン文字列を表示する窓がポップアップします。

 

[CTop] [Contents][TopHdngList][Prev][][Next][SameLvlPrev][Child][SameLvlNext][Parent][Top][End]

3 設定ファイルの記述例

hoge.exe の設定ファイル hoge.ahp の記述例。

hoge.ahp
# @(#) hoge.ahp
#
# $Filename: hoge.ahp $
# $Lastupdate: 2015-12-31 18:01:28 $
#
# これは hoge.exe の設定ファイル(ahpfile)のサンプルです。
# 
# (1) 実行するプログラムのフルパスまたは相対パスまたは start.exe
# 必須です。
# 
# start.exe を指定すると、2番目に指定する文字列をファイル名
# あるいは URL と見て、関連付けによって開きます。相対パスの
# 場合、myarghelper.exe があるディレクトリからの相対パスと解
# 釈されます。
C:¥home¥shiiba¥bin¥MsgBox.exe
#
# (2) 引数 (必要でなければ無くても構いません。
# $(Arguments)、$(Argument1)、$(Argument2), $(Argument3) を
# 文字列の中に含めることができます。
# 
# $(Arguments) を指定すると、myarghelper.exe を複写してでき
# た名前のファイル hoge.exeに与えられたすべての引数が 
# $(Arguments) の位置に挿入されます。
# 
# $(Argument1) を指定すると、hoge.exe を呼び出したときの引数
# の1番目の引数が$(Argument1) の位置に挿入されます。
# 
# $(Argument1)、$(Argument2) を指定すると、hoge.exe を呼び出
# したときの引数の1番目の引数が$(Argument1) の位置に、2番目
# の引数が$(Argument2) の位置に挿入されます。
# 
# $(Argument1)、$(Argument2)、$(Argument3) を指定すると、
# hoge.exe を呼び出したときの引数の1番目の引数が$(Argument1) 
# の位置に、2番目の引数が$(Argument2) の位置に、3番目の引数
# が$(Argument3) の位置に挿入されます。
# 
-t:"hoge"
#
# ここの例のように設定すると、実行するコマンドラインとして
# 
#   C:¥home¥shiiba¥bin¥MsgBox.exe -t:"hoge" 
#
# が用意され、hoge.exe を起動したときの引数が後に追加され
# て実行されます。
# 
# たとえば、
# 
#   hoge.exe Hello
#   
# とすると、
# 
#   C:¥home¥shiiba¥bin¥MsgBox.exe -t:"hoge" Hello
#
# が実行されます。
# 
# 実行プログラムとして、start.exe を指定して、
# 引数として、
# http://www.google.com/search?q=$(Arguments)
# を指定すれば、google 検索できます。

 

[CTop] [Contents][TopHdngList][Prev][][Next][SameLvlPrev][Child][SameLvlNext][Parent][Top][End]

4 //help

 $ hoge.exe //help

のように引数に //help だけを指定すると、hoge.exe が置いてあるディレクトリにある hoge.exe.txt を start コマンドを用いて表示します。

 

[CTop] [Contents][TopHdngList][Prev][][Next][SameLvlPrev][Child][SameLvlNext][Parent][Top][End]

5 アイコンの変更

myarghelper.exe をコピーして、つまり

 $ copy ArgHelper.exe hoge.exe

のようにして、hoge.exe を作成したとして、hoge.exe のアイコンを別のものにしたいことがあるでしょう。

そのために、IconChanger.exe というプログラムが利用できます。

 IconChanger
 http://aboon.s33.xrea.com/index.php?page=soft_iconchanger

 

[CTop] [Contents][TopHdngList][Prev][][Next][SameLvlPrev][Child][SameLvlNext][Parent][Top][End]

6 ソースプログラム

./myarghelper-180103.zip

展開すると、myarghelper.exe を作成するディレクトリが出来ます。

解凍してできたディレクトリの myarghelper.sln をダブルクリックしてください。

 

Produced by the use of o2h version 12.24.
[CTop] [Top] [Prev] [Body] [BodyStart] .