このエントリーをはてなブックマークに追加

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
'参考
'http://park11.wakwak.com/~miko/Excel_Note/11-01_userform.htm#11-01-11

'注意
'PtrSafe はVBA7で搭載されたキーワード。VBA6.5以前の場合はこのキーワードを削除。

時間ができたらアドインとして作成してみます。



ホーム  |  ブログ  |  Wiki  |  ギャラリー  |  ダウンロード  |  概要  |  ポリシー