右クリックに追加

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 右クリックに追加

by 刈谷 真 » 2007年11月08日(木) 08:47

返信遅れました。
イグトランスさん、分かりましたありがとうございます。

by イグトランス » 2007年11月07日(水) 02:30

忘れていましたが,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つがこれです。

by 刈谷 真 » 2007年11月06日(火) 16:08

イグトランスさん、アドバイスありがとうございます。

全てうまくできました。これは他にも応用できそうですね!

by イグトランス » 2007年11月06日(火) 10:05

HKEY_CLASSES_ROOT\[その拡張子]→(規定)のデータにある文字列をメモ→HKEY_CLASSES_ROOT\[その文字列]\shell
ここで,[その文字列]を*にすれば,全てのファイルを対象にできます。また,Directoryにすれば,ファイルシステム上の全てのフォルダを対象にできます。
shell\[追加したいメニューの文字列]\Command
レジストリパス上で英数字(ASCIIにある文字?)以外を使うのは推奨されていなかったはずです。日本語を使いたければ,[追加したいメニューの文字列]には仮に英数字のみの名前とし,その中の(規定)のデータで改めて日本語文字を使った名前を使うという風にします。

例えばHKEY_CLASSES_ROOT\mp3file\shell\play\の(規定)は,"再生(&P)"となっており,mp3ファイルの右クリックメニューには,playではなく,再生(P)と表示されます。&はウィンドウ上のメニューと同じでショートカットキーの指定です。

シェルエクステンション

by 刈谷 真 » 2007年11月05日(月) 21:36

Tomorrowさん、ありがとうございます。
おかげさまで、ある特定の拡張子(.txt)を開くのに成功しました。

シェルエクステンションについて色々調べまして、HKEY_CLASSES_ROOT\CLSID
 をいじるという事は分ったのですが、どのようにするのですか。
教えてください。

Re: 右クリックに追加

by Tomorrow » 2007年11月05日(月) 19:03

ある特定の拡張子のファイル(.txtとか独自形式とか)に対してであれば、

HKEY_CLASSES_ROOT\[その拡張子]→(規定)のデータにある文字列をメモ→HKEY_CLASSES_ROOT\[その文字列]\shell

とたどって、既に登録してある拡張子のshell\Open\Commandとかを真似して、Openの代わりにshell\[追加したいメニューの文字列]\Commandという感じにキーを作成してやればOKです。
ファイルパスはコマンドラインから拾えます。

任意の拡張子やフォルダに対してコンテキストメニューを追加したいのであれば「シェルエクステンション」と呼ばれる技術を使わなきゃならないぽいです。

右クリックに追加

by 刈谷 真 » 2007年11月04日(日) 00:33

ABのプログラム講座で、テキストエディターを作りました。

そこで、ファイルやフォルダを右クリックしたときのメニューに"ABtxtで開く"
を追加して、テキストエディターで開く風にしたいのですが、
レジストリの何所に書き込むか困ってます。

また右クリックで開けたとして、ファイルパスをどのように取得すれば良いのですか?
教えてください。

ページトップ