exeファイル右クリックメニューの制御

解決


Noch  2005-06-20 14:13:58  No: 57986

VC++で作成した exe のアイコンを右クリック
するとデフォルトでなんらかのメニューが出てきますが
これを制御するにはどうすればいいのでしょうか。

たとえばアイコンを右クリックするとメニューに
「設定」という項目が追加されていて、
それをクリックするとそのexeファイルの設定ダイアログが
表示されるようにするとか、できますでしょうか。
よろしくお願いいたします。


シャノン  2005-06-20 17:24:47  No: 57987

右クリックメニューを変更する方法はいくつかありますが…おそらく、ご希望のようなものは難しいでしょう。
右クリックメニューを出す機能も、そのメニューを変更する機能も、自作ソフトではなく、Windows の機能ですから。
すべての exe ファイルの右クリックメニューに「設定」が追加されてしまい、自作の特定の exe ファイルでしか機能しない(メモ帳にも電卓にも「設定」メニューは出るが、クリックしても何も起きない)のでよければ簡単かもしれませんが、それでもよろしいのでしょうか?
コンテキストメニュー拡張を使い、exe が何らかのデータを持っている場合のみ「設定」を追加するという方法なら、解決できるかもしれません。


Noch  2005-06-20 17:52:37  No: 57988

シャノンさん。ありがとうございます。

> 自作の特定の exe ファイルでしか機能しない
> (メモ帳にも電卓にも「設定」メニューは出るが、
> クリックしても何も起きない)
> のでよければ簡単かもしれませんが、
> それでもよろしいのでしょうか?

これはちょっと困ります。
なので

> コンテキストメニュー拡張を使い、exe が何らかのデータを持っている場合のみ
> 「設定」を追加するという方法なら、解決できるかもしれません。

このお話を具体的にはどうすればいいのか
もう少し詳しく教えていただけないでしょうか。


シャノン  2005-06-21 05:16:14  No: 57989

>> コンテキストメニュー拡張を使い、exe が何らかのデータを持っている場合のみ
>> 「設定」を追加するという方法なら、解決できるかもしれません。

> このお話を具体的にはどうすればいいのか
> もう少し詳しく教えていただけないでしょうか。

通常の、いわゆる「ファイルの関連付け」では、拡張子に関連付けたコマンドは、問答無用で表示されてしまいます。
が、シェル拡張という方法を使うと、ファイルの内容を判断して、表示されるメニューを変えることができます。

DLL をつくり、それを特定の方法でレジストリに登録し、exe と関連付けます。
すると、exe ファイルを右クリックした際、メニューが表示される前に、DLL 内の関数が呼ばれます。
この関数内で、これから表示されるメニューに手を加えることができますので、exe のファイルの内容を調べ、「設定」メニューを出すべきものだった場合だけ、メニューアイテムを追加するということができます。

参考資料は
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_int/shell_int_extending/extensionhandlers/contextmenuhandlers.asp


Noch  2005-06-23 16:13:18  No: 57990

シャノンさん。度々ありがとうございます。
返事が遅くなり申し訳ありませんでした。
ん〜英語サイトですか(^^ゞ
出来るかどうかわかりまっせんが、がんばってみます。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加