C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■103032 / 1階層)  Windows11の右クリック時のコンテキストメニューについ
□投稿者/ とっちゃん (818回)-(2024/03/30(Sat) 14:48:31)
No103031 (くま さん) に返信

> a.IExplorerCommandインターフェイス実装はC#で実装可能でしょうか?
> できればサンプルがあれば助かります。
>
実装の可否だけで言えば、不可能ではないと思います。
「が」
IExplorerCommand はインプロセスのCOMサーバーなので、
相手先(エクスプローラとは限りません)のプロセス内で利用されます。

そのため、仮に作成可能だったとしても、C#で作るのはお勧めしません。
最低でも、C++ で作成することをお勧めします。

最悪の組み合わせの場合マシンが起動しなくなる(正確にはログイン後シェルがクラッシュして
そのまま何もできない状態になる)可能性があります。
セーフモードで復帰できればいいですが、最悪それもできず、フォーマットしか
回避策がないなんてことにもなりかねませんので。


> b."パッケージ化アプリ"について
> アプリにパッケージIDを付けるという事はわかったのですが
> 調べていると
> ・Windows11を開発モードにしないと動かない
> ・Windowsストアアプリに登録しないと動かない
> などの情報もあり困惑しています。

こちら、「パッケージID」を発行してもらうために
Windows デベロッパー センターに
アプリを登録する必要があります(実際にストアに載せる必要はない)。

ただ、IExplorerCommand は、Native DLL として作ることになるので
開発者モードにしていなくても動かすことはできるかもしれません。
こちらは、パッケージIDをモジュールにどういう形で埋め込まないといけないかで
変わってくるのでちょっとわからないです(このために作ってみたなどはしていないので)。

> この辺り「こういう知識が必要」「この様な制限があります」「こんな手順を行えば登録できます」等情報をいただけたら助かります。

最低限の知識として、COM(Component Object Model)に関する諸情報は必須です。
また、Shell拡張の特にコンテキストメニュー関係の知識も重要です。
先にも書いていますが、エクスプローラ(正確にはこのメニューを表示するアプリケーション)の
プロセス内で動くため、.NET の利用は避けたほうがいいでしょう。


一応リンク(一次リソース)も上げておきます。

・Windows デベロッパー センター
https://developer.microsoft.com/ja-jp/windows/?WT.mc_id=DT-MVP-32182
・コンポーネント オブジェクト モデル (COM)
https://learn.microsoft.com/ja-jp/windows/win32/com/component-object-model--com--portal
・シェル拡張機能の使用
https://learn.microsoft.com/ja-jp/windows/win32/shell/shell-exts?WT.mc_id=DT-MVP-32182

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Windows11の右クリック時のコンテキストメニューについ /くま →Re[2]: Windows11の右クリック時のコンテキストメニューについ /くま
 
上記関連ツリー

Windows11の右クリック時のコンテキストメニューについ / くま (24/03/27(Wed) 11:27) #103031
Windows11の右クリック時のコンテキストメニューについ / とっちゃん (24/03/30(Sat) 14:48) #103032 ←Now
  └ Re[2]: Windows11の右クリック時のコンテキストメニューについ / くま (24/03/30(Sat) 16:05) #103033 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信