トップ回答者
outlookの新規メッセージ作成画面での、右クリックのメニューのカスタマイズ方法

質問
-
こんにちは。
Outlookの新規メッセージ作成画面で、テキストを選択して右クリックすると、
切り取り(T)
コピー(C)
貼り付け(P)
などのメニューが表示されますが、この右クリックメニューをカスタマイズ(項目の追加)を
行いたいとおもっています。検索エンジンやMSDNでカスタマイズの方法を調べたのですが分からなかったですが、
どのようにすればメニューカスタマイズができるようになるのでしょうか?
また、Outlookだけでなく、Windos標準でインストールされているメモ帳で
テキストを選択して右クリックしたときのメニューもカスタマイズしたいと思っています。
目的は、選択した文字列を解析するアプリをC#で作成したいのです。
その目的を達成するてに、右クリックのメニューに、作成したプログラムを登録し、そのプログラムに
選択した文字列を渡したいのです。
環境は以下の通りです。
OS:WindowsXP
Outlook:2007
開発環境:VisualStudio2005
言語:C#.NET
よろしくおねがいいたします。
回答
-
無理でしょう。
Outlookの編集画面のControlは、独自のControlですからEdit Controlとは違い独自の処理で実現しています。
その独自の処理は公開されていないでしょうし、対応するならAddinで実現できないか検討するぐらいでしょうか。
当然その場合は、汎用的なApplicationにはなりません。またOutlookのVersionによってその処理は変わってくるでしょうね。
メモ帳はEdit Controlを利用しており、HookしてSubclassingしWM_CONTEXTMENUを捕まえて処理を行う方法が考えられますが、
メモ帳含めApplicationが安定して動作するように配慮しなければならない点が多く、難易度は高いです。結構な知識が求められます。要件を見直せないか、検討されてみては如何でしょうか。
- 編集済み kozz 2011年5月17日 13:29 copy miss
- 回答としてマーク buruburukoinu 2011年5月24日 11:08
-
すでに指摘されていますように、フックして無理矢理実現することになると思われます。
その際、そのウィンドウ構成やメニュー構成に合わせた小細工を仕掛けないといけないことが予想され、対象とするアプリケーション、対象とするバージョンが多ければ多いほど、より複雑な実装が必要になります。
正直なところ、そんなことは辞めておくべきです。あと、C# でフックする場合、対象のプロセスに .NET Framework がロードできなければなりません。
仮に、対象のプロセスがすでに .NET Framework 1.1 を読み込んでいる場合は、.NET Framework 2.0 をロードできないので、無理矢理やるとしても、C#/VB.NET を選択すべきではありません。
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。- 回答としてマーク buruburukoinu 2011年5月24日 11:08
すべての返信
-
無理でしょう。
Outlookの編集画面のControlは、独自のControlですからEdit Controlとは違い独自の処理で実現しています。
その独自の処理は公開されていないでしょうし、対応するならAddinで実現できないか検討するぐらいでしょうか。
当然その場合は、汎用的なApplicationにはなりません。またOutlookのVersionによってその処理は変わってくるでしょうね。
メモ帳はEdit Controlを利用しており、HookしてSubclassingしWM_CONTEXTMENUを捕まえて処理を行う方法が考えられますが、
メモ帳含めApplicationが安定して動作するように配慮しなければならない点が多く、難易度は高いです。結構な知識が求められます。要件を見直せないか、検討されてみては如何でしょうか。
- 編集済み kozz 2011年5月17日 13:29 copy miss
- 回答としてマーク buruburukoinu 2011年5月24日 11:08
-
すでに指摘されていますように、フックして無理矢理実現することになると思われます。
その際、そのウィンドウ構成やメニュー構成に合わせた小細工を仕掛けないといけないことが予想され、対象とするアプリケーション、対象とするバージョンが多ければ多いほど、より複雑な実装が必要になります。
正直なところ、そんなことは辞めておくべきです。あと、C# でフックする場合、対象のプロセスに .NET Framework がロードできなければなりません。
仮に、対象のプロセスがすでに .NET Framework 1.1 を読み込んでいる場合は、.NET Framework 2.0 をロードできないので、無理矢理やるとしても、C#/VB.NET を選択すべきではありません。
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。- 回答としてマーク buruburukoinu 2011年5月24日 11:08