ABのプログラム講座で、テキストエディターを作りました。
そこで、ファイルやフォルダを右クリックしたときのメニューに"ABtxtで開く"
を追加して、テキストエディターで開く風にしたいのですが、
レジストリの何所に書き込むか困ってます。
また右クリックで開けたとして、ファイルパスをどのように取得すれば良いのですか?
教えてください。
右クリックに追加
Re: 右クリックに追加
ある特定の拡張子のファイル(.txtとか独自形式とか)に対してであれば、
HKEY_CLASSES_ROOT\[その拡張子]→(規定)のデータにある文字列をメモ→HKEY_CLASSES_ROOT\[その文字列]\shell
とたどって、既に登録してある拡張子のshell\Open\Commandとかを真似して、Openの代わりにshell\[追加したいメニューの文字列]\Commandという感じにキーを作成してやればOKです。
ファイルパスはコマンドラインから拾えます。
任意の拡張子やフォルダに対してコンテキストメニューを追加したいのであれば「シェルエクステンション」と呼ばれる技術を使わなきゃならないぽいです。
HKEY_CLASSES_ROOT\[その拡張子]→(規定)のデータにある文字列をメモ→HKEY_CLASSES_ROOT\[その文字列]\shell
とたどって、既に登録してある拡張子のshell\Open\Commandとかを真似して、Openの代わりにshell\[追加したいメニューの文字列]\Commandという感じにキーを作成してやればOKです。
ファイルパスはコマンドラインから拾えます。
任意の拡張子やフォルダに対してコンテキストメニューを追加したいのであれば「シェルエクステンション」と呼ばれる技術を使わなきゃならないぽいです。
シェルエクステンション
Tomorrowさん、ありがとうございます。
おかげさまで、ある特定の拡張子(.txt)を開くのに成功しました。
シェルエクステンションについて色々調べまして、HKEY_CLASSES_ROOT\CLSID
をいじるという事は分ったのですが、どのようにするのですか。
教えてください。
おかげさまで、ある特定の拡張子(.txt)を開くのに成功しました。
シェルエクステンションについて色々調べまして、HKEY_CLASSES_ROOT\CLSID
をいじるという事は分ったのですが、どのようにするのですか。
教えてください。
ここで,[その文字列]を*にすれば,全てのファイルを対象にできます。また,Directoryにすれば,ファイルシステム上の全てのフォルダを対象にできます。HKEY_CLASSES_ROOT\[その拡張子]→(規定)のデータにある文字列をメモ→HKEY_CLASSES_ROOT\[その文字列]\shell
レジストリパス上で英数字(ASCIIにある文字?)以外を使うのは推奨されていなかったはずです。日本語を使いたければ,[追加したいメニューの文字列]には仮に英数字のみの名前とし,その中の(規定)のデータで改めて日本語文字を使った名前を使うという風にします。shell\[追加したいメニューの文字列]\Command
例えばHKEY_CLASSES_ROOT\mp3file\shell\play\の(規定)は,"再生(&P)"となっており,mp3ファイルの右クリックメニューには,playではなく,再生(P)と表示されます。&はウィンドウ上のメニューと同じでショートカットキーの指定です。
忘れていましたが,HKEY_CLASSES_ROOT (HKEY_LOCAL_MACHINE\Software\Classes)の書き込みは,要注意です。
NT系では標準だとAdministartorsやPower Usersなどそれなりの権限を持ったユーザでないと書き込みできません(ABの関連付けもUsersでは失敗する)。Vista以降はUACも関わり,HKEY_CLASSES_ROOTへ書き込むには,昇格をお願いしなければならなくなっているはずです。
HKEY_CLASSES_ROOTの代わりにHKEY_CURRENT_USER\Software\Classesとすればよい(ただし,ここはユーザ別の設定)のですが,95/98/Meでは使えません。
9xまで対応するなら,必要に応じてHKEY_CLASSES_ROOTかHKEY_CURRENT_USER\Software\Classesを使うかを切り替えなければならないのです。
たまにインストーラで,プログラムを自分自身だけが使うか,コンピュータ上の全てのユーザが使うか選択を求められることがありますが,その理由の1つがこれです。
NT系では標準だとAdministartorsやPower Usersなどそれなりの権限を持ったユーザでないと書き込みできません(ABの関連付けもUsersでは失敗する)。Vista以降はUACも関わり,HKEY_CLASSES_ROOTへ書き込むには,昇格をお願いしなければならなくなっているはずです。
HKEY_CLASSES_ROOTの代わりにHKEY_CURRENT_USER\Software\Classesとすればよい(ただし,ここはユーザ別の設定)のですが,95/98/Meでは使えません。
9xまで対応するなら,必要に応じてHKEY_CLASSES_ROOTかHKEY_CURRENT_USER\Software\Classesを使うかを切り替えなければならないのです。
たまにインストーラで,プログラムを自分自身だけが使うか,コンピュータ上の全てのユーザが使うか選択を求められることがありますが,その理由の1つがこれです。