YouTube | Facebook | X(Twitter) | RSS

Outlookの [閉じる] ボタンを無効にする方法

2011/3/10 (木)

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以前の場合はこのキーワードを削除。

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

  • この記事を書いた人

羽田 康祐

伊達と酔狂のGISエンジニア。GIS上級技術者、Esri認定インストラクター、CompTIA CTT+ Classroom Trainer、潜水士、PADIダイブマスター、四アマ。WordPress は 2.1 からのユーザーで歴だけは長い。 代表著書『"地図リテラシー入門―地図の正しい読み方・描き方がわかる』 GIS を使った自己紹介はこちら。ESRIジャパン(株)所属、元青山学院大学非常勤講師を兼務。日本地図学会第31期常任委員。発言は個人の見解です。

-プログラミング, IT