システムの仕組み


プログラムの分類

PCKのプログラムは、大きく次のように分類されます。

 

GUIフロントエンド。アイコンの漢字の色が赤、シアン、マゼンタ、青、黄緑のGUIプログラム: pipe line)、command line)、sb)、dir)、dir)、ls)、cat)、perl)など。

spawn.exe

コマンド行ツールspawn.exe以外のアイコンのないプログラム: bin2hex.execat.execut.exeexpand.exefold.exefortune.exehead.exels.exeod.exepaste.exeran.exerandstr.exestrfile.exetail.exetod.exeunexpand.exeuniq.exewc.exe

単独で動作するGUIプログラム。アイコンの漢字の色が緑のGUIプログラム: board)、touch)、el)、pckbps)、pcksetup)。

エクスプローラの機能を拡張し、PCKを使いやすくするのシェルエクステンション: ot32ext.dllpckext.dll

 

このうち、GUIフロントエンドは、対応するコマンド行プログラム(PCKWindowsに含まれている場合と別途入手しなければならない場合があります)とspawn.exeがなければ動作しません。シェルエクステンションとは、それぞれtouchまたはGUIフロントエンドがなければ存在する意味がありません。ほかのものは、単独でも動作しますが、最初の3つは密接な関係を持っています。

GUIフロントエンド

GUIフロントエンドとは、コマンド行プログラムを起動するためのGUIプログラムを指す、このシステムのなかでの用語です。耳慣れない言葉でしょうが、慣れてください。この種のプログラムにとってもっとも重要なものは、メインダイアログボックスのもっとも下に表示される1行のテキスト、すなわちコマンド行です。GUIフロントエンドのその他の部分は、このコマンド行を組み立てるための少々大げさな道具となっています。GUIフロントエンドは、「実行」ボタンが押されると(あるいは、ファイルがドロップされると)、組み立てたコマンド行をパラメータとしてspawn.exeを起動します。つまり、コマンド行を実際に実行するのはspawn.exeで、GUIフロントエンドはコマンド行を編集する以外に何もしません。GUIフロントエンドは、起動したspawn.exeが処理を終了するのを待とうともしません。もし、何らかの問題があってspawn.exeがハングしても、GUIフロントエンドはハングしません。

GUIフロントエンドは、コピーアンドペースト、ドラッグアンドドロップ、バッチファイルの保存とロードという形で、プログラム名とコマンド行オプション、入力ファイル名を相互にやり取りすることができます。このやり取りの仕組みや交換されるデータの形式については、「コマンド行情報のやり取りの仕組み」を参照してください。

赤いGUIフロントエンド

ほとんどのGUIフロントエンドは、PCKに含まれているものであれ、そうでないものであれ、対応するコマンド行ツールを想定して作られていますが、5つのプログラムだけはそのような対応関係を持ちません。

1つ目は、ユーザーが入力した任意のコマンド行を実行する(cmdline)です。極端なことを言えば、これとspawn.exeがあれば、ほかのGUIフロントエンドはいりません。があれば、どのようなコマンド行でも実行できます。しかし、オプションがダイアログボックス自体に表示されているほかのフロントエンドの方がよりも使いやすいという方もいらっしゃるでしょう(そうでなければ、以外のGUIフロントエンドを30種も作ってしまった私は困るのですが)。同じことを実現する複数の方法があるということは、決して悪いことではないはずです。

2つ目のsb)は、ver.2.2.0.0で追加されたプログラムで、GUIフロントエンドというよりは、単独で動作するGUIプログラムです。実際、はコマンド行プログラムの出力を表示できるPCKプログラムでもあります。しかし、プログラム内であるコマンドを使えば、とほぼ同じようにコマンド行を自由に書いて実行できます。

3つ目のtv)は、ver.2.2.0.5で追加されたプログラムで、と同様に基本的にはブラウザ、ビュアプログラムです。通常のテキストビュアとは異なり、ツリーコントロール(エクスプローラのフォルダ一覧のウィンドウで使われているもの)を使って、行頭にインデントの入ったテキストファイルを木構造にして表示します。ですから、以上に表示がメインの機能で、コマンド行プログラム実行機能は、あっても邪魔ではないから付け加えておいたという感じです。コマンド行の実行方法は、とまったく同じです。

4つ目のbg)は、GUIフロントエンドでありながら、GUIを持ちません。スタートメニューアイテム、デスクトップアイコンなどのエクスプローラの機能とPCKを組み合わせて使うときにのみ必要になります。

対応するコマンド行ツールを持たない最後のGUIフロントエンドは、さまざまなコマンド行ツールを組み合わせてパイプラインを組み立てるpipeline)です。起動直後のは何もすることができませんが、コピーアンドペースト、ドラッグアンドドロップ、バッチファイルロードなどの操作によってメインダイアログに1つ以上のアイテムを追加すれば、それらのアイテムから構成されるパイプラインを実行できるようになります。に手でパイプラインを入力する場合を除き、パイプラインを組み立てられるのはだけです。その意味で、PCK(パイプライン構築キット)が名前通りの仕事をする上でもっとも重要なツールだと言うことができます。

起動直後に何もできないのに、インストール後、デスクトップアイコンや「スタート」メニューから起動できるのは、だけですが、それは、だけがほかのGUIフロントエンドを起動できるからです。は、メインダイアログボックスのほかに、次のような「起動ボックス」というダイアログボックスを表示します(「設定」ダイアログボックスの設定次第で、起動時に自動表示することも、「追加」ボタンを押すまで表示しないようにすることもできます)。

 

 

このダイアログボックスには、PCKに含まれているほとんどすべてのGUIプログラムのリスト(ただし、自身やなどを除く)が含まれています。このなかでどれかを選択して「起動」ボタンを押すか、ダブルクリックすると、そのプログラムが起動されます。これは、エクスプローラでコマンドをダブルクリックするのと同じことですが、「起動ボックス」には個々のコマンドについての簡単な説明が含まれています。

このように、対応するコマンド行ツールを持たないGUIフロントエンドのなかでも特殊な存在ですので、他のGUIプログラムとは異なり、もっとも目立つ赤のアイコンを持っています。

spawn.exe

spawn.exeは、与えられたコマンド行をさらにcommand.comWindows 9x/Me)かcmd.exeWindows NT/2000/XP)に渡して実行させます。ただし、キーボードから標準入力を与えたり、コンソールウィンドウに標準出力を書き出したりしなくても済むようにするために、コマンド行に若干の操作を加えます。もっとも、パイプ文字を解釈するのは、command.comcmd.exeです。つまり、spawn.exeも大した仕事をしているわけではありません。spawn.exeは、command.comcmd.exeがコマンドの実行を終了するのを待ち、標準出力がリダイレクトされている一時ファイル(あるいはコマンド行で明示的に指定されたファイル)を引数として、レジストリで指定されているテキストエディタを起動します。spawn.exeは、MS-DOS/コマンドプロンプトウィンドウで実行することもできます。spawn.exeの詳細については、「spawnについて」を参照してください。

コマンド行ツール

コマンド行ツールは、このシステムで使われるときでも、そうでないときでも自分の仕事をするということでは同じです。このシステムがなくてもcygwinツールが便利に使えるのと同じように、PCKに含まれるコマンド行ツールも、このシステムとは無関係に使うことができます。

GUIフロントエンドがどのコマンド行ツールを使うかは、GUIフロントエンドの設定によって決まります。アイコンの漢字が青になっているGUIフロントエンドは、PCK付属のコマンド行ツールを動かすことを意図して作られていますが、PCK付属のコマンド行ツールはcygwinツールをモデルとして作られていますので、cygwinツールを起動するために使うこともできるはずです。

GUIツール

board)、touch)は、GUIフロントエンドやコマンド行ツールとは無関係で、独立のプログラムとして実行されます。el)は、GUIフロントエンドから起動される補助プログラムですが、対応するコマンド行ツールを持つわけではなく、他のプログラムの助けを借りずに自分の仕事をすることができますから、やはりこのグループに分類されます。これらのプログラムの使い方の詳細は、それぞれのページを参照してください。pckbps)は、PCKで作成したバッチファイルをエクスプローラでダブルクリックしたときに、起動されるプログラムで、適切なGUIフロントエンドを選択し、コマンド行引数としてバッチファイルを指定してそのGUIフロントエンドを起動します。単独では意味を持ちません。このプログラムの詳細については、「コマンド行情報のやり取りの仕組み」の「バッチファイルからの起動」を参照してください。

シェルエクステンション

シェルエクステンションとは、Windowsエクスプローラの機能を拡張する小プログラムで、これがインストールされているシステムでは、Windowsエクスプローラの動作がシェルエクステンション抜きのシステムとは少し異なるものになります。しかし、この種のプログラムは、単独では実行できません。PCKには2つのシェルエクステンションが付属しており、どちらも他のファイルとは異なり、Windowsディレクトリにインストールされます。

pckext.dllは、拡張子.batのファイルのためのアイコンエクステンション兼コンテキストメニューエクステンションです。ver.2の任意のGUIフロントエンドで「(.bat保存」コマンドを選択してバッチファイルを保存してください。そのファイルは、通常の.batファイルとは異なり、GUIフロントエンドのアイコンで表示されるはずです。これがアイコンエクステンションとしての機能です。GUIフロントエンドのアイコンで表示されている.batファイルは、ダブルクリックするとアイコンが示すGUIフロントエンドを起動します。その仕組みの詳細については、「コマンド行情報のやり取りの仕組み」の「バッチファイルからの起動」を参照してください。

エクスプローラで拡張子が.batのファイルを右クリックしてコンテキストメニューを表示すると、1つから3つのコマンドが追加されます。どのファイルでも表示されるのは、「内容を「見」る」で、でファイルの内容を表示できます(もっとも、テキストファイルではないファイルを見ても、あまり意味はありませんが)。PCKの漢字アイコンで表示されているファイルの場合、これの他に「「行」から開く」、「「管」から開く」の2つのコマンドが追加されます。ダブルクリックしたときに起動されるGUIフロントエンドが何であれ、これらのコマンドを選択すれば、からバッチファイルを開くことができます。通常のアイコンで表示されているファイルの場合、「内容を「見」る」を除けば「「行」で実行する」コマンドだけが追加されます。これを選択すると、が起動され、そのコマンド行コンボボックスにバッチファイル名が表示されます。「実行」ボタンを押せばただちにバッチファイルを実行できるように準備するわけです。以上がpckext.dllのコンテキストメニューエクステンションとしての機能です。

ot32ext.dllは、touch)のためのコンテキストメニューエクステンションです。PCKをインストールしたあと、エクスプローラでファイルを選択し(複数でも可)、マウスの右ボタンをクリックすると、コンテキストメニューのなかに「タイムスタンプ操作」というコマンドが追加されているはずです。このコマンドを選択すると、選択されたファイルをリストに含んだ形でtouch)が起動されます。

レジストリ

先ほど、spawn.exeが起動するテキストエディタはレジストリの設定によって決まると書きましたが、PCKでは、レジストリがさまざまな箇所で使われています。詳細は、「レジストリについて」を参照してください。