Outlook は [最小化時にアイコン化する] という設定があり、タスク トレイに最小化するように設定できて常にメールを受信するのに便利です。しかし、うっかりウィンドウの [閉じる] ボタンをクリックすると、Outlook は終了してしまいメールを受信することができません。
これまでは TaskLook というフリーソフトを使って Outlook が終了しないように制御してましたが、会社の Outlook を 2010 にアップデートしたら TaskLook が使えなくなってしまいました。
ウィンドウの [閉じる] ボタンが無効にできないものかと調べたら、Win32API を利用することで実現できることが分かりました。
Outlook のマクロを有効にし、Visual Basic Editor に以下のコードを記載すると、ウィンドウの [閉じる] ボタンが無効になります(もちろんメッセージなどのウィンドウは閉じることができます)。
これで快適 Outlook 常駐ライフが満喫できます♪
1.ThisOutlookSession モジュールに以下のコードを貼り付ける。
Private Sub Application_Startup() Call DisableCloseButton End Sub
2.標準モジュールを作成し、以下のコードを貼り付ける。
'Outlookの [閉じる] ボタンを無効に設定 'Win32API Public Declare PtrSafe Function FindWindow Lib "user32" _ Alias "FindWindowA" (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Public Declare PtrSafe Function GetSystemMenu Lib "user32" _ (ByVal hwnd As Long, ByVal bRevert As Long) As Long Public Declare PtrSafe Function DeleteMenu Lib "user32" _ (ByVal hMenu As Long, ByVal nPosition As Long, _ ByVal wFlags As Long) As Long Public Declare PtrSafe Function DrawMenuBar Lib "user32" _ (ByVal hwnd As Long) As Long Public Const SC_CLOSE = &HF060& Public Const MF_BYCOMMAND = &H0& Public Sub DisableCloseButton() Dim hwnd As Long Dim hMenu As Long Dim rc As Long hwnd = FindWindow("rctrl_renwnd32", vbNullString) 'rctrl_renwnd32=Outoook hMenu = GetSystemMenu(hwnd, 0&) rc = DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND) rc = DrawMenuBar(hwnd) End Sub '参考 '//park11.wakwak.com/~miko/Excel_Note/11-01_userform.htm#11-01-11 '注意 'PtrSafe はVBA7で搭載されたキーワード。VBA6.5以前の場合はこのキーワードを削除。
時間ができたらアドインとして作成してみます。