私は Outlook プログラミングが初めてなので、最初のステップ (後でより高度な) は次のタスクです。
- 新しいリボン (Ribbon1) タブを作成します (エクスプローラーと新しいインスペクターに表示されます)。
- メールを選択 (Explore) または開く (Inspector) と、リボン タブにメールの件名が表示されます (前述のテスト)。
エクスプローラーの部分は簡単に始められましたが、新しいインスペクターに対して上記を行うのに問題があります
私はさまざまなアプローチを試しましたが、どれもうまくいかないようです:
NewInspector で Globals.Ribbons[inspector].Ribbon1 を参照しようとしましたが、それは常に null です
NewInspector で Activate イベントをサブスクライブしてそこから実行しようとしましたが、Application.ActiveInspector() が null であり、NewInspector イベントからインスペクターのグローバル コピーを保存すると、最初は機能しません。新しいインスペクター (2 回目以降は既読メールでのみ。作成メールでは不可)
リボン ロード イベントを使用しようとしましたが、それは初回のみ発生します
Globals.Ribbons.Ribbon1 メンバーを使用しようとしましたが、それは初めて機能します
(私は NewInspector のサンプルをたくさん見つけましたが、誰もこれ以外のリボンを変更したくないようですhttps://stackoverflow.com/questions/7852017/outlook-2007-ribbon-object-reference-not-set-オブジェクトのインスタンスへの変換であり、そのための答えはありません)
これは私を夢中にさせています... 本当にそのような単純なタスクを行う方法はありません!?
参考までにサンプルコード
void InspectorsNewInspector(Outlook.Inspector inspector)
{
AddInspectorEventHandlers(inspector);
}
private void AddInspectorEventHandlers(Outlook.Inspector inspector)
{
if (inspector == null)
{
return;
}
Ribbon1 ribbon1 = Globals.Ribbons[inspector].Ribbon1; //This always return null!!!
((Outlook.InspectorEvents_10_Event)inspector).Activate += InspectorActivate;
((Outlook.InspectorEvents_10_Event)inspector).Close += InspectorClose;
_openInspectors.Add(inspector);
}