Windows 7でOutlookのカレンダーのリマインダーがトップにとどまるようにする方法

calendar microsoft-outlook popups reminder windows

Windows 7を使い始めたばかりですが、Outlookのリマインダーをポップアップさせて目立つように表示する方法を知りたいです。彼らはタスクバー上のOutlookスタック内の別のウィンドウとして、目立たないように開き続けます。その結果、他のすべてのものの後ろにポップアップするため、見落としがちになってしまいます

どうすれば見落としにくくなるのか?

(明らかに、人は通常、自分自身を前面に押し出すような不愉快なアプリを欲しがりません。しかし、そのような動作が望ましい場所はいくつかあり、Outlookのカレンダーリマインダーはそのうちの1つです)

  126  thursdaysgeek  2011-03-01


ベストアンサー

私はOutlook 2010で同じ問題を抱えていました。以下に記載されている手順を使用して、それは魅力のように動作します。すべてのマクロを有効にすることを忘れないでください。トラストセンター>マクロの設定

  • 後で使えるようにデジタル証明書を作成する。スタートボタンを押して’certificate’と入力し,’Digital Certificate for VBA Projects’を選択する.
  • 証明書の名前を入力します。OKをクリックする.Outlookを開き,Alt + F11を押して,VBAエディタを起動する.
  • 左側のツリーで「Microsoft Office Outlook Objects」を展開し、「ThisOutlookSession」をダブルクリックします
  • このコードを貼り付けます

    Private Declare PtrSafe Function FindWindowA Lib "user32" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    
    Private Declare PtrSafe Function SetWindowPos Lib "user32" ( _
    ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
    ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _
    ByVal cy As Long, ByVal wFlags As Long) As Long
    
    Private Const SWP_NOSIZE = &H1
    Private Const SWP_NOMOVE = &H2
    Private Const FLAGS As Long = SWP_NOMOVE Or SWP_NOSIZE
    Private Const HWND_TOPMOST = -1
    
    Private Sub Application_Reminder(ByVal Item As Object)
    Dim ReminderWindowHWnd As Variant
    On Error Resume Next
    ReminderWindowHWnd = FindWindowA(vbNullString, "1 Reminder")
    SetWindowPos ReminderWindowHWnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS
    
    End Sub
    
  • マクロが実行されるように署名します。Tools > Digital Signature… で、先ほど作成した証明書を選択します

  • VBAウィンドウを閉じます
  • ファイル>オプション>トラストセンター>トラストセンター設定>マクロ設定ですべてのマクロを有効にします

63  Gullu  2012-08-16


AutoHotKeyもこれを解決するために使用することができます。このスクリプトは、フォーカスを盗むことなくリマインダーウィンドウを上部に表示します(Win10 / Outlook 2013でテスト済み)

TrayTip Script, Looking for Reminder window to put on top, , 16
SetTitleMatchMode  2 ; windows contains
loop {
WinWait, Reminder(s),
WinSet, AlwaysOnTop, on, Reminder(s)
WinRestore, Reminder(s)
TrayTip Outlook Reminder, You have an outlook reminder open, , 16
WinWaitClose, Reminder(s), ,30
}

AHK スクリプトコンパイル済み EXEコンパイル済み EXE

19  Eric L  2016-02-02


私が見つけたベストアンサーはこちらです。いくつかの簡単なVBA.を使用して再び他のウィンドウの前にポップアップするためにOutlookの予定のリマインダーを取得する方法

ThisOutlookSession “に数行の簡単なVBAコードを追加する必要があります。これで、毎回ウィンドウがポップアップするようになりました。ずっと良くなりました

  • 後日のためにデジタル証明書を作成します
  • スタート」を押して「証明書」と入力し,「VBAプロジェクト用デジタル証明書」を選択する.
  • 証明書の名前を入力します
  • Done
  • Outlookを開き、Alt + F11を押してVBAエディタを起動します
  • 左側のツリーで「Microsoft Office Outlook Objects」を展開し、「ThisOutlookSession」をダブルクリックします
  • このコードを貼り付けて、引用符の中のテキストをお好みに合わせて変更してください。引用符はそのままにしておきます

    Private Sub Application_Reminder(ByVal Item As Object)
    
    
    If TypeOf Item Is AppointmentItem Then
    MsgBox "Message text", vbSystemModal, "Message title"
    End If
    
    
    End Sub
    
  • ツール > デジタル署名… に進み、先ほど作成した証明書を選択してマクロに署名します

  • VBAウィンドウを閉じます

13  tommykey  2012-03-13


バージョン1803(2018年2月)より、「リマインダーを他のウィンドウの上に表示する」オプションが利用できるようになりました。デフォルトでは有効になっていないようです

enter image description here

7  Devil’s Advocate  2018-06-01


方法がありません。私たちの会社は、マイクロソフトに直接エスカレーションしようとしました。ここで人々が行う1つのことは、それに気づくのを助けるために、それをより不快な音に割り当てることです。しかし、マイクロソフトはそれが設計上のものだと言っています

6  Brian  2011-03-01


上記のGulluさんの回答と同じですが、異なるウィンドウタイトルに対応するように変更しました

Private Declare PtrSafe Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare PtrSafe Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const FLAGS As Long = SWP_NOMOVE Or SWP_NOSIZE
Private Const HWND_TOPMOST = -1

'// TO ACCOUNT FOR WINDOW TITLE CHANGING WITH NOTIFICATION COUNT:
Private Sub Application_Reminder(ByVal Item As Object)
Dim ReminderWindowHWnd As Variant
'On Error Resume Next
On Error GoTo err
'Loop 25 times as FindWindowA needs exact title which varies according to number of reminder items...
Dim iReminderCount As Integer
For iReminderCount = 1 To 25
'Try two syntaxes...
ReminderWindowHWnd = FindWindowA(vbNullString, iReminderCount & " Reminder"): SetWindowPos ReminderWindowHWnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS
ReminderWindowHWnd = FindWindowA(vbNullString, iReminderCount & " Reminder(s)"): SetWindowPos ReminderWindowHWnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS
Next
Exit Sub
err:
Debug.Print err.Number & " - " & err.Description & " (iReminderCount = " & iReminderCount & ")"
Resume Next
End Sub

6  tbone  2015-02-03


これは私も悩んでいました。いくつかの激しい検索の後、私は部分的な答えを見つけました。http://www.pcreview.co.uk/forums/hidden-outlook-reminders-t3972914.html

タスクバーとスタートメニューのプロパティ」の「タスクバーボタン」の設定を「結合しない」に変更すると、グループ化が分離され、他に開いているものの前にリマインダーがポップアップ表示されます

ある時は作業中のものの後ろに隠れていたり、別の時は前に出てきたりと、一貫性がありませんでした。どちらの場合もタスクバーにはOutlook自体とは異なるアイコンが表示されていたので、少なくとも私がそれに気づく可能性はありました

3  Mark Ransom  2011-05-10


私はFilebox eXtenderを使用しており、最初のリマインダーが来たときにそれを開き、キャプションバーの右上にある新しい「ピン」アイコンをクリックしています。そして、次のリマインダーが来ると、それは前景に来ます

3  jacorb effect  2011-12-21


ShowReminders (http://www.sagelamp.com/pages/showreminders.aspx)というアドインを見つけました。リマインダーウィンドウを最小化しても動作します

1  user245293  2013-08-13


Outlook VBAと簡単なEXEを使ってようやく簡単な解決策が見つかりました

ここでは、二度とアウトルックの会議の予定を逃したことがない方法は次のとおりです

なぜこの目的のためだけに単独のexeアプリケーションなのか?私はVBAに大きな赤い箱を埋め込んでいましたが、その解決策は問題だらけでした(大きな赤い箱を上に保つために hwnd や他の珍しいシステムプロパティを使用しなければならないからだと思います)。だから、物事をより簡単にするために、なぜ一つのことを行う基本的なEXEではありません。あなたは、microsoftから無料のツールを使用することができます(Visual studio Community 2015は無料です)

これはEXEコードです。このコードをコンパイルします

Imports System.Timers
Public Class Form1
Dim tTimer As New Timer
Public Sub New()
InitializeComponent()
Me.StartPosition = Windows.Forms.FormStartPosition.CenterScreen
Me.TopMost = True
Me.TopLevel = True
End Sub
Private Sub Form1_DoubleClick(sender As Object, e As EventArgs) Handles Me.DoubleClick
Application.Exit()
End Sub
Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
flashingQuick()
End Sub
Sub flashingQuick()
tTimer.Start()
AddHandler tTimer.Elapsed, New ElapsedEventHandler(AddressOf TimerTick)
End Sub
Sub TimerTick(ByVal source As [Object], ByVal e As ElapsedEventArgs)
Dim theTimer As System.Timers.Timer = DirectCast(source, System.Timers.Timer)
theTimer.Interval = 500
theTimer.Enabled = True
If Me.BackColor = System.Drawing.SystemColors.Control Then
Me.BackColor = Color.Red
Else
Me.BackColor = System.Drawing.SystemColors.Control
End If
End Sub
End Class

そして、アウトルックVBAで必要なのはこれだけです。これをThisOutlookSessionに入れます

Private Sub Application_Reminder(ByVal Item As Object)
On Error Resume Next
If Item.MessageClass <> "IPM.Appointment" Then
Exit Sub
End If
Dim sAPPData As String
Dim sFileName As String
sAPPData = Environ("AppData")
sFileName = "\Microsoft\Windows\Start Menu\Programs\BigRedBox\BigRedBox.exe"
If Dir(sAPPData & sFileName) <> "" Then
Call Shell(sAPPData & sFileName)
End If
End Sub

0  user2635566  2015-08-07


これはドイツ語版で動作するtbone’s answerの強化版です

Private Declare PtrSafe Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare PtrSafe Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Boolean
Private Declare PtrSafe Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Boolean
Private Declare PtrSafe Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long

Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const FLAGS As Long = SWP_NOMOVE Or SWP_NOSIZE
Private Const HWND_TOPMOST = -1

Private Sub Application_Reminder(ByVal Item As Object)
Dim ReminderWindowHWnd As Variant
On Error GoTo err
'Loop 25 times as FindWindowA needs exact title which varies according to number of reminder items...
Dim iReminderCount As Integer
For iReminderCount = 1 To 25
'Try two syntaxes...

ReminderWindowHWnd = FindWindowA(vbNullString, iReminderCount & " Erinnerung")
SetWindowPos ReminderWindowHWnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS
BringWindowToTop (ReminderWindowHWnd)
SetForegroundWindow ReminderWindowHWnd
SetFocus ReminderWindowHWnd

ReminderWindowHWnd = FindWindowA(vbNullString, iReminderCount & " Erinnerung(en)")
SetWindowPos ReminderWindowHWnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS
BringWindowToTop ReminderWindowHWnd
SetForegroundWindow ReminderWindowHWnd
SetFocus ReminderWindowHWnd
Next
Exit Sub
err:
Debug.Print err.Number & " - " & err.Description & " (iReminderCount = " & iReminderCount & ")"
Resume Next
End Sub

ドイツ語のウィンドウタイトルを追加したほか、いくつかの新機能(BringWindowToTop, SetForegroundWindow, SetFocus)を追加しました

Outlook 2016と一緒に私のドイツのWindows 10で動作します

私は新しい証明書を生成することができませんでした(スタートボタンを押して “certificate “と入力しても何も表示されませんでした)が、単に署名時にリストから別の証明書を選択しただけでした

0  Uwe Keim  2015-11-10


タイトルとURLをコピーしました