nshell.exe readme  2012-10-29 

http://appletkan.com/ Copyright 2008〜2012 All Rights Reserved applet@bp.iij4u.or.jp


1. nshell.exe とは

　汎用キーバインディング変更ソフト「のどか」のヘルパーアプリです。
　ライセンスは、「のどか」本体と同じCPLです。

　そなえる機能は、以下の通り

　・「のどか」と同時に動作させると不都合が発生するプログラムのために、次に示す機能を持ちます。
　　ケース0:「のどか」を終了させ、該当プログラムを起動。そのプログラムが終了すると、「のどか」を自動起動させる。

　　ケース1:「のどか」を終了させ、該当プログラムを起動させる。

　　ケース2:「のどか」を終了させ、該当プログラムを起動させる。その後、指定したウィンドウタイトル名を持つプログラムが終了したら、「のどか」を自動起動させる。

　　ケース3:「のどか」を終了させる。

　　ケース4: 「のどか」を終了させ、該当プログラムを起動させる。その後、そのプログラムが終了したら、「のどか」を自動起動させる。


　・デバイスドライバを取り除いているわけではなく、単純に「のどか」を終了させ、起動させています。
　　したがって、「のどか」さえ終了させれば、問題が無いケースには対応できるだろうと考えています。

　・「のどか」Version 4.02以降にて、動作確認を行っています。
　　派生元の「窓使いの憂鬱」mayu.exe Version 3.30の場合でも、動作してますが、非サポートとさせてください。

　　また「窓使いの憂鬱」とは開発サポート主体が異なるため、「窓使いの憂鬱」作者に、お問い合わせすることなどされないよう、よろしくお願いいたします。


　・もし、本プログラムを実行して、なんらかの問題が発生した場合、バグ等には、改良改善に誠意を持って対応致します。しかしながら、基本的に使用された方の自己責任となります。もしも、ご了承いただけない場合には、ただちに御使用を、おとりやめください。

　・制限事項については、4.制限事項をご覧ください。


2. 不都合が発生するプログラムって

　nProtect GameGuardと呼ばれるプログラムによって、プロテクトされるようなゲームプログラムを想定しています。　「のどか」が動作していると、キーボード操作が一切効かなくなると伺っています。実際にキーボードが操作できなくなった場合、タスクマネージャーを開いて、「のどか」のプロセスを終了させてください。

　開発では、notepadやregeditなどで動作確認を実施しました。

　現在、約3秒間の緩衝時間を置いていますが、もし時間を調整した方が良い場合には、お知らせください。
　検討します。


3. 使い方
　(1)インストール先
　　「のどか」あるいは「窓使いの憂鬱」がインストールされたフォルダーに nshell.exeをコピーしてください。
　　もし、異なる場所にコピーされた場合には、下記、「のどか」あるいは「窓使いの憂鬱」の設定ファイルでの使い方の際、nshell.exeのフルパス記述を、合わせて変更してください。


　(2)コマンドラインでの使い方
　　以降、ケース0から4について、説明を行います。

　[ケース0]
  「のどか」を終了させ、該当プログラムを起動。そのプログラムが終了すると、「のどか」を自動起動させる。

  　・コマンドプロンプトを開きます。
　　・nshell.exe をコピーしたフォルダーに、カレントフォルダを移動してください。
　　・nshell とタイプした後ろに、実行したいプログラムのファイル名を含むフルパスあるいは、パスが通っているなら、実行ファイル名を入れて、[Enter]を押してください。

　　解説

　　　構文は、nshell <実行プログラム名> <引数> ....　です。
　　　例えば、起動したいプログラムを notepad.exe。引数に test.txt を指定する場合は
　　　次のようになり、最後に[Enter]を押します。

　　　 nshell notepad.exe test.txt

　　　すると、「のどか」あるいは「窓使いの憂鬱」が終了し、約3秒後、指定された実行プログラムが起動します。その実行プログラムを終了させると、約3秒後、「のどか」あるいは「窓使いの憂鬱」が起動します。


　　　もし、実行プログラムをフルパス指定するならば、次のようになります。

　　　　nshell c:\Windows\notepad.exe test.txt

　　　下記は、Program Files のvenderというフォルダにインストールされたapp.exe を起動します。

	startという引数を与える場合：
　　　　nshell c:\Program Files\vendor\app.exe start
　　　　nshell "c:\Program Files\vendor\app.exe" start

　　　　引数不要の場合：
　　　　nshell c:\Program Files\vendor\app.exe
　　　　nshell "c:\Program Files\vendor\app.exe"

　　　　　ダブルクォーテーションの有無は、どちらでもかまいません。


　　備考

　　　Vistaの場合、指定した実行プログラムに管理者権限が必要な場合には、起動できずにエラーとなります。
　　　その場合には、コマンドプロンプト自体を管理者権限で起動する。あるいは、nshell.exeのプロパティの互換性タブにて、管理者としてこのプログラムを実行するにチェックを付けてください。
　　　ただし、その場合には、自動起動した「のどか」は管理者権限で動作することになります。

　　　たまに、「のどか」への終了処理時に、「のどか」が異常終了することがあります。

　　　「のどか」あるいは「窓使いの憂鬱」が実行中で無い場合には、自動終了、自動起動はなく、単純に指定されたプログラムを実行します。

　　　実行プログラムに対する引数は、実行ファイルの引数として全て渡しています。
　　　(実装上の文字数制限がありますが、コマンドラインで指定できる場合は大丈夫です。)

　　　実行プログラム名を指定せずに、nshell.exeのみを実行すると、機能と引数を紹介するダイアログウィンドウが開きます。

　　　実行ファイル名を指定せずに、例えば test.txt だけを指定した場合、規定のエディタが起動すべきですが、サポートしていません。

　　　nshell.exeの作業フォルダは、起動したコマンドプロンプトのカレントフォルダとなります。
　　　もし、指定した実行プログラムが存在するフォルダで、実行したい場合には、そのフォルダに移動後
　　　nshell.exe自身をフルパス指定してください。例えば以下のようになります。

　　　"c:\Program Files\nodoka\nshell.exe" "c:\Windows\notepad.exe" test.txt

　　　実行ファイルの起動に失敗した場合には、nshell.exeに与えた引数と、エラーメッセージを含むエラーダイアログが表示されます。存在しないプログラムを指定すると、どのようなダイアログが表示されるか見ることが可能です。


　[ケース1]
   「のどか」を終了させ、該当プログラムを起動させる。

    構文 nshell 1 実行プログラム名

　　例としては、下記となります。

      nshell 1 notepad
      nshell 1 "c:\Program Files\Windows\notepad.exe"

　　備考

　　　実行プログラムに引数をつけることはできません。
　　　「のどか」は再起動しません。



　[ケース2]
　　「のどか」を終了させ、該当プログラムを起動させる。その後、指定したウィンドウタイトル名を持つプログラムが終了したら、「のどか」を自動起動させる。

　　構文 nshell 2 ウィンドウタイトル名 実行プログラム名

　　例としては、下記となります。

      nshell 2 "LaTale Client" "c:\program files\Gamepot\LaTale\LaTaleLauncher.exe"

　　備考
　　　・ウィンドウタイトル名が、実行中に変更されるものには対応していません。
　　　・実行ファイルプログラムの起動処理後、3分以内に、指定したウィンドウタイトル名のウィンドウが5秒間以上、存在する必要があります。
　　　・nshell起動時に、既に、該当タイトルのプログラムを検出した場合、エラーダイアログが表示され、「のどか」の再起動を取りやめます。
　　　・なんらかの問題で、該当タイトルのプログラムの終了を検出できないことがあります。その場合、nshell.exeは、存在し続けるので、タスクマネージャで終了させる必要があります。


　[ケース3]
　　「のどか」を終了させます。

    構文 nshell 3

　　例としては、下記となります。

      nshell 3

　　備考
　　　「のどか」を、ただ終了させるのみで、再起動しません。


　[ケース4]
　　「のどか」を終了させ、該当プログラムを起動させる。その後、そのプログラムが終了したら、「のどか」を自動起動させる。

　　構文 nshell 4 実行プログラム名

　　例としては、下記となります。

      nshell 4 "c:\program files\Gamepot\LaTale\LaTaleLauncher.exe"


　(3)「のどか」設定ファイルでの記述方法

　　「のどか」設定ファイル内で、特定キーを押したときに、使用したい場合には
　　&ShellExecute 関数を用いて記述します。

　　例えば Shift-F2キーで、(2)で説明を行った[ケース0]から[ケース2]までと同じことを実施したい場合には
　　以下のようになります。



　　[ケース0] 「のどか」を終了させ、該当プログラムを起動。そのプログラムが終了すると、「のどか」を自動起動させる。

　　　key S-F2 => &ShellExecute("open", "c:\\program files\\nodoka\\nshell.exe", "notepad.exe test.txt", "c:\\temp", ShowNormal)


　　[ケース1] 「のどか」を終了させ、該当プログラムを起動させる。

　　　key S-F2 => &ShellExecute("open", "c:\\program files\\nodoka\\nshell.exe", "1 notepad.exe", "c:\\temp", ShowNormal)


　　[ケース2] 「のどか」を終了させ、該当プログラムを起動させる。その後、指定したウィンドウタイトル名を持つプログラムが終了したら、「のどか」を自動起動させる。

　　　key S-F2 => &ShellExecute("open", "c:\\program files\\nodoka\\nshell.exe", "2 \"LaTale Client\" \"c:\\program files\\Gamepot\\LaTale\\LaTaleLauncher.exe\"", "c:\\program files\\Gamepot\\LaTale\\", ShowNormal)


　　[ケース3]「のどか」を終了させます。

　　　key S-F2 => &ShellExecute("open", "c:\\program files\\nodoka\\nshell.exe", "3",, ShowNormal)


　　[ケース4] 「のどか」を終了させ、該当プログラムを起動させる。その後、そのプログラムが終了したら、「のどか」を自動起動させる。

　　　key S-F2 => &ShellExecute("open", "c:\\program files\\nodoka\\nshell.exe", "4 \"c:\\program files\\Gamepot\\LaTale\\LaTaleLauncher.exe\"", "c:\\program files\\Gamepot\\LaTale\\", ShowNormal)

　　解説
　　
　　上記の例では、nshell.exe が、c:\Program Files\nodoka フォルダにコピーされていることを想定しています。
　　Shift-F2キーを押すと、c:\tempを作業フォルダとした nshell.exeが実行されます。

　　そうすると、nshell.exe自身が「のどか」あるいは「窓使いの憂鬱」を終了させます。

　　その後、[ケース0]の場合、約3秒後に指定した notepad.exe (メモ帳プログラム) で test.txt ファイルを開きます。
　　そして、notepad を終了させると、約3秒後に「のどか」あるいは「窓使いの憂鬱」が自動起動され
　　nshell.exe は終了します。

　　nshell.exeの作業フォルダに c:\temp が指定されたので、nshell.exeから起動された notepad.exe の
　　作業フォルダも、c:\tempとなります。通常は、指定した実行ファイルが存在するフォルダを指定することになるでしょう。


　　[ケース0]において、実行させたいプログラムの引数が不要であれば、"notepad.exe test.txt"ではなく
　　"notepad.exe" だけで良いです。

　　実行させたいプログラム名をフルパスで指定する場合には、フォルダの区切りに、￥(実際には半角)記号
　　が2個ずつ必要となります。(nshell.exeの記述と同様です。)
　　この点が、コマンドラインでの記述の場合と異なります。

　　もし、作業フォルダを指定しない場合には、,, ShowNormal) と記述してかまいませんが
　　実行フォルダは不定となります。

　　もし、Vistaの場合で、起動したい実行ファイルに、管理者権限が必要な場合には、「のどか」あるいは「窓使いの憂鬱」を管理者権限で実行するか、nshell.exe を管理者権限で起動するようプロパティで設定しておく必要があります。この場合、再起動させた「のどか」は管理者権限で動作しますので、ご注意ください。


　　[ケース2]の場合、&ShellExecuteの3番目の記述が複雑ですが、次のようにして作成します。
　　コマンドプロンプトの例であげた

　　　2 "LaTale Client" "c:\program files\Gamepot\LaTale\LaTaleLauncher.exe"

　　に対し、「"」「\」記号があったら、その前に「\」記号を置いて

　　　2 \"LaTale Client\" \"c:\\program files\\Gamepot\\LaTale\\LaTaleLauncher.exe\"

　　さらに、「"」記号で囲んだものです。

　　　"2 \"LaTale Client\" \"c:\\program files\\Gamepot\\LaTale\\LaTaleLauncher.exe\""


4. 制限事項
　1)「のどか」自動終了時に、まれに「のどか」が異常終了することがあります。
　　仕組みとしては、メニューから終了させたことと変わりないのですが、Windows起動直後だと、おきやすいようです。

  2) [ケース2]のウィンドウタイトル監視が終わらず、nshell.exeのプロセスが残り、所定の動作ができないことがあります。
　　この場合、nshell.exeのプロセスをタスクマネージャで終了させる必要があります。

  3) Vistaの場合、管理者権限が必要な実行プログラムの場合、「のどか」あるいは、nshell.exeを管理者権限で動作するよう設定する必要があります。
　　この場合、自動起動してきた「のどか」は、管理者権限で動作しますので、ご注意ください。


5. リリース履歴
 2012-10-29 1.05
    ・デバッグコンソール出力コードが残っていたので削除しました。

  2012-10-21 1.04
　　・引数4 を追加しました。
　　　Windows 7 x64環境にて、引数2を指定した場合、起動したい該当プログラムのタイトル名が取得できなくなっており、起動できても終了判断ができていませんでした。引数4では、プロセスを監視するようにしました。

　　・64bit版を準備しました。nshell.exeと記述しているところはnshell64.exeと読み替えてください。

  2009-12-13 1.03
　　・Windows 7 x64環境では、のどかの制御ができなくなっていたので、修正。

  2008-09-02 1.02 3rdリリース
　　・機能追加　のどかを、ただ終了させる機能を追加。
　　・このリリースから、単体リリースはなくなり、「のどか」同梱とした。

  2008-08-17 1.01 2ndリリース
　　・機能追加　実行ファイルの監視無し/のどか再起動無し。ウィンドウタイトルの監視/終了検出/のどか再起動有り
　　・LaTaleというソフトで nProtect GameGuardが動作するため、これを用いて、動作確認を実施。
　　・「窓使いの憂鬱」mayu.exeの正常な終了の仕方が分かったので、実装。


　2008-08-14 1.00 1stリリース
　　・現在は、nshell.exe単体での配布となっていますが、「のどか」の次のバージョンに含まれるようになると単体リリースはなくなる予定です。


6. ライセンス

　同梱した Common_Public_License_1_0.txt をご覧ください。
　なお Common_Public_License_1_0_JP.txt は、参考訳となります。

以上
