質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

VSTO

Visual Studio Tools for Office

Q&A

解決済

1回答

1284閲覧

Outlookアドインでメール編集画面の送信ボタンを色付けしたい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

VSTO

Visual Studio Tools for Office

0グッド

0クリップ

投稿2021/02/27 01:21

あまり調べきれていない段階での質問で恐縮ですが、できるものかどうか教えて下さい。
Outlook365で、メール誤送信対策として、VSTOアドインを自主開発しました。
(.NET Framework 4.7.2+C#)
本来の目的は出来ましたが、より利用者の注意を促すため、メール編集画面の「送信」ボタンを色付けや枠線なりの装飾(強調)をしたいと考えています。
それはできるものか、できるとしたらその方法が知りたいです。
イメージ説明
メール編集画面を開いたイベントは、以下のコードで捕捉できることはわかっています。

C#

1public partial class ThisAddIn 2{ 3 private void ThisAddIn_Startup(object sender, System.EventArgs e) 4 { 5 Outlook.Application.Inspectors.NewInspector += 6 new Outlook.InspectorsEvents_NewInspectorEventHandler(MyNewInspector); 7 } 8 9 private void MyNewInspector(Outlook.Inspector olInspector) 10 { 11 var olMailItem = olInspector.CurrentItem as Outlook.MailItem; 12 if (olMailItem != null) 13 { 14 if (olMailItem.EntryID == null) 15 { 16 // ★メール編集画面が開いた(新規作成 or 返信 or 転送の操作をした) 17 // ★ここで何らかの方法で「送信」ボタンを色付けなどしたい 18 } 19 } 20 } 21}

Win32APIのレベルでいえば、メール編集画面のHWNDを取得して、そこからFindWindowで送信ボタンのHWNDを取得して、そこにSendMessageを飛ばす、といった方法になるのかもしれません。

同様のことをVSTOアドインの中でやるとしたら、どういった方法になりますでしょうか?
Win32APIのような考えではなく、リボンを独自に作成して、既存の組込みタブに埋め込む、といった方法になるのでしょうか?(その場合、その辺はまだ全然理解できていません。)

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

リボンの送信ボタンを(Win32API的な方法で)直接操作する方法はないそうです。
カスタムリボン(デザイナーではなくXMLで)を作成して、送信ボタンの近くに配置することで、当初の想定に近い感じにしました。以下概略で。

XML

1Ribbon1.xml 2<?xml version="1.0" encoding="UTF-8"?> 3<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load"> 4 <ribbon> 5 <tabs> 6 <tab idMso="TabNewMailMessage"> 7 <group id="MyMessageGroup" label="Custom" insertBeforeMso="GroupClipboard" autoScale="true"> 8 <button id="MyMessageRibbonIcon" label="Custom" size="large" 9 getImage="GetImageIcon" onAction="OnMyMessageRibbonIcon" /> 10 </group> 11 </tab> 12 </tabs> 13 </ribbon> 14</customUI> 15

C#

1Ribbon1.cs 2public class Ribbon1 : Office.IRibbonExtensibility 3{ 4 private Office.IRibbonUI ribbon; 5 public Ribbon1() 6 { 7 } 8 public string GetCustomUI(string ribbonID) 9 { 10 if (ribbonID == "Microsoft.Outlook.Mail.Compose") 11 { 12 return GetResourceText("SampleProject.Ribbon1.xml"); 13 } 14 } 15 public void Ribbon_Load(Office.IRibbonUI ribbonUI) 16 { 17 this.ribbon = ribbonUI; 18 } 19 public void OnMyMessageRibbonIcon(Office.IRibbonControl control) 20 { 21 System.Windows.Forms.MessageBox.Show("ボタンクリック!"); 22 } 23} 24

投稿2021/03/01 07:22

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問