2012-01-22 9 views
1

私はWindows 7のPCから次の機能を無効にする私のユニプロジェクトとしてVB.Netにソフトウェアを作成しようとしています。私は、Windowsレジストリのコンテキストメニューから無効にする必要があると思うが、コンテキストメニュー全体を無効にする代わりに、個別に無効にしたいと思う。Windowsのレジストリからカット、コピー、貼り付け、名前の変更などを無効にするにはどうすればいいですか?

  • カット、コピー、貼り付け、名前の変更、削除、オープン、プリント、共有、ショートカットの作成、オープン、送信、新規作成、プロパティ。

マウスの右クリックでこれらのオプションが無効になるように、チェックボックスを使用して選択的または個別に無効にするオプションをユーザに与えたいと考えています。

私の問題は、レジストリが非常に大きいので無効にする正しいキーがわからないということです。&いくつかのキーは同じ名前です。

Windowsレジストリの上記の右クリック機能の正確なキーの場所は何ですか?またはこれについてどうやって行くのですか?

+0

私は答えはありませんが、なぜあなたはそのようなことをする必要があるのだろうか? – xxx

+0

それは私のプロジェクトのためのユニです。 – J0hn30

答えて

7

この質問で想定される深刻な欠陥は、コンテキストメニューがレジストリエントリによって構成されていることです。そうではない。 Windowsでは、WM_CONTEXTMENUメッセージを送信してウィンドウのコンテキストメニューを変更することができます。コードで、設定ではありません。そのメッセージのデフォルトの実装に満足していない場合は、サブクラスウィンドウプロシージャを使用し、独自のコンテキストメニューを表示できるようにメッセージのハンドラを用意してください。これはWindowsの仕組みの中核です。

書き込みしていないプログラムのコンテキストメニューを変更することも可能ですが、はるかに複雑です。 SetWindowsHookEx()を使用して、DLLを他のプロセスに挿入します。 VB.NETのようなDLLを書くことはできません。ネイティブコードが必要です。そのプロセスでは、マネージコードを実行するためにCLRが読み込まれないためです。

+0

私は参照してください。ハンスさんありがとうございました。 – J0hn30

関連する問題