Windows 7でOutlookの予定表アラームを常に最新の状態に保つ方法


123

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

どうすれば見逃しにくくなりますか?

(明らかに、自分自身を最前線に追いやる不快なアプリは通常望まないでしょう。しかし、そのような振る舞いが望ましいいくつかの場所があり、Outlookカレンダーリマインダーはそれらの1つです。)


16
これはとても必要です。集中力が低下した場合、リマインダーを見逃して、遅れて初めて他のウィンドウに埋もれてしまうことに気付くのは非常に簡単です。単純な設定では不可能なのはばかげています。すぐにそれを受け取らない場合、リマインダーは何がいいですか?!
マリオ14

回答:


61

Outlook 2010でも同じ問題が発生しました。以下の手順を使用すると、まるで魔法のように機能します。すべてのマクロを有効にすることを忘れないでください:[セキュリティセンター]> [マクロの設定]。

  • 後で使用するためにデジタル証明書を作成します。「スタート」をクリックして「証明書」と入力し、「VBAプロジェクトのデジタル証明書」を選択します
  • 証明書の名前を入力します。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
    
  • マクロが実行されるように署名します:[ツール]> [デジタル署名...]で、前に作成した証明書を選択します

  • VBAウィンドウを閉じます
  • [ファイル]> [オプション]> [セキュリティセンター]> [セキュリティセンターの設定]> [マクロの設定]ですべてのマクロを有効にします。

3
私は、時々(通常はOutlookを起動したときに)最初のリマインダーが一番上に表示されないことに気付きました。[閉じる]をクリックしてリマインダーを閉じると、それ以降のすべてのリマインダーが一番上に表示されます。理由がわからない。
グル

3
On Error Resume Nextこれは単なる標準のVBAの使用..ですだけがサブに適用され、ちょうどクラッシュからの全マクロを防ぐことができます。
ジェフマーティン

3
Gulluが最初のコメントで指摘したのと同じ問題がありました。これを回避するために、Outlook(またはコンピューター)を再起動した後、最初のリマインダーのメッセージボックスを表示します。 Private messageAlreadyShown As Boolean Private Sub Application_Reminder(ByVal Item As Object)On Error Resume Next Not messageAlreadyShown Then MsgBox "First Reminder", vbSystemModal, "" If messageAlreadyShown = True ReminderWindow = FindWindowA(vbNullString、 "1 Reminder")SetWindowPos ReminderWindow, HWND_TOPMOST, 0, 0, 0, 0, FLAGS End Sub
helios456 14

3
マクロの自己署名証明書を作成するツールを見つけるのに問題がありました。ツールSELFCERT.EXEであるC:\ Program Files \ Microsoft Office \ OfficeXXで見つけました。
SSZero 14

3
私は「1つのリマインダー」を見つけるために私のものを変えました、そして、それは働きました。
ロバートブルッカー

18

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


AHKを使用する場合は+1。これをwin 7 / outlook 2016でテストしました。ビューを前面に表示しますが、入力している場合は実際にはフォーカスを奪いません。まさに私が欲しかったもの!(ただし、トレイの先端を取り外したところです:))
Fawix

1
スクリプトをWindowsから開始する非常に簡単な方法があることに注意してください。フォルダーに置くだけC:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
-Fawix

AHKスクリプトとコンパイル済みEXEリンクが壊れています。上記のスクリプトをコピーしてAutoHotKey.ahkスクリプトに貼り付けましたが、機能しませんでした。
マイクコール


1
スタートアップフォルダへの行き方は簡単に入力することによって行うことができますshell:startupアドレスバーまたは実行ボックスに
ゲルトファンデンベルグ

13

私が見つけた最良の答えはこちらです:簡単なVBAを使用して、Outlookの予定のリマインダーを他のウィンドウの前に再びポップアップさせる方法。

「ThisOutlookSession」に数行の単純なVBAコードを追加する必要があります。現在、毎回ウィンドウがポップアップします。ずっといい。

  • 後で使用するためにデジタル証明書を作成する
  • スタートをクリックして「証明書」と入力し、「VBAプロジェクトのデジタル証明書」を選択します
  • 証明書の名前を入力してください
  • 完了
  • 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ウィンドウを閉じます

Outlook 2010、Windows 7でこれを試してみましたが、機能しませんでした:(
tekumara

これをGulluのソリューションの一部として使用しました。どうもありがとう。
スマンドリ

これはOutlook 2007では機能しましたが、Gulluは機能しませんでした。
ウィルシェパード14

7

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

ここに画像の説明を入力してください


3
私はまだ更新されたバージョンを持っていませんが、これは素晴らしいです!また、私が尋ねてからわずか7年です。(それはMSのdisであり、あなたにも感謝しています。)
thursdaysgeek

2
これは、古い質問に対する優れた更新です。これは「常に上」とはまったく同じではないことに注意してください。ただし、ウィンドウがzオーダーの一番上に表示されるようにするため、ユーザーが見逃す可能性は低くなります。
マークラフルーア

6

道はない。当社は、マイクロソフトに直接エスカレートしようとしました。ここで人々が行うことの1つは、気づきやすいように、より不快な音を割り当てることです。しかし、Microsoftはそれが仕様によるものだと言っています。


11
私はキューブファームで働いています。他人のためにコンピューターを静かに保とうとしています。:(
木曜日

3
彼らが本当に設計しているのであれば、彼らはデフォルトでそのようにしますが、それを変更することを許可します。彼らは「デザイン」し、我慢することを学びますか?
木曜日

私の答えをご覧ください。最終的に解決策があります。
グル

サードパーティのソリューションを見つけました。Actual Tools Actual Window Guard $ 30(すべての製品に含まれているActual Windows Manager $ 50 も含まれています)を使用すると、ウィンドウを常に一番上に配置できます。さらに、機能のオン/オフを簡単に切り替えることができます。(値札を簡単に受け入れられるようにするためだけではありません。)仮想デスクトップとマルチモニターユーティリティツールを試すと、これらを見つけました。私は後者を数ヶ月使用しており、非常に満足しています。
Javaru

解決策はより良いツールを使用することだと思います!悪いことに、それは私にとっては選択ではありません。(
ジョナサンベン

6

上記の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

さらに良いのはDim olApp As Outlook.Application Set olApp = New Outlook.Application iReminderCount = olApp.Reminders.Count、[ループを削除する]のようなものです。
ズスカー

@Zusukar Reminders.Countは、アクティブなリマインダーダイアログではなく、アポイントメントに設定されたリマインダーの総数を返します。私のシステムでは、たとえば22を返します。
ジェフ

@Zusukar理想的にはReminder.IsVisibleプロパティを使用して表示されているものをカウントできますが、これは常にfalseです。おそらく、リマインダーが表示されるようにマークされる前にイベントが発生します。
ジェフ

3

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

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

私はそれをテストしようとしましたが、矛盾していることがわかりました。あるときは私が取り組んでいたものの後ろに隠れたままであり、別の時にはそれは前面に現れました。どちらの場合も、Outlook自体とは異なるアイコンがタスクバーに表示されていたため、少なくとも気付く可能性がありました。


Never Combineを使用してもOutlook 2013を正しく動作させることができませんでした。Outlook 2013、Windows 7 32ビット。

タスクバーでアプリを組み合わせる方が好きなので、これは私にとっては良い解決策ではありません
ジョナサンベン

3

Filebox eXtenderを使用し、最初のリマインダーが表示されたら、それを開いてキャプションバーの右上にある新しい「ピン」アイコンをクリックします。次に、次のリマインダーが来ると、フォアグラウンドになります...


PinMe!同じことをします。これは無料のポータブルツールであり、この1つのタスクを非常にうまく行います。Outlook 2013をテストしましたが、希望どおりに動作します。Outlookを前景または最小化すると、カレンダーリマインダーは常に前面に表示されます。

@SunがPinMeを提供します!ショット
クリスマリシック

@Sun iは、通知ウィンドウに「スーパーピン」を設定します。これにより、非表示にするまで、常に永続的に表示されます。アドバタイズされたままの状態で機能し、連続した通知を配信します。驚くばかり。
クリスマリシック

PinMeを試してみましたが、ウィンドウを一番上に表示することができませんでした!??
tbone

1

ShowReminders(http://www.sagelamp.com/pages/showreminders.aspx)というアドインを見つけましたこれは、リマインダーウィンドウを一番上に表示します。リマインダーウィンドウを最小化しても機能します。


3
製品は10月2014のよう$ 20で言う

Windows 10でセットアップが失敗する:The following package files could not be found: C:\Users\ukeim\AppData\Local\Temp\IXP000.TMP\Office2007PIARedist\o2007pia.msi
Uwe Keim

0

最終的に、Outlook VBAと単純なEXEを使用した簡単なソリューションを見つけました。

今後の見通し会議の予定を見逃すことはありません。

なぜこの目的のためにスタンドアロンのexeアプリケーションを使用するのですか?VBAに大きな赤いボックスを埋め込んでいましたが、その解決策には問題がいっぱいでした(大きな赤いボックスを上に保つにはhwndやその他の異常なシステムプロパティを使用する必要があるためだと思います)。だから物事を簡単にするために、なぜ一つのことをする基本的なEXEではないのか。Microsoftの無料ツールを使用できます(Visual Studio Community 2015は無料です)。

これはEXEコードです。1つのフォームを持つ単純なWindowsフォームアプリケーション。このコードをコンパイルします。

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

そして、これが私がOutlook 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

これは、ドイツ語版で動作するtboneの回答の拡張版です。

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

ドイツ語のウィンドウタイトルといくつかの新しい関数(BringWindowToTopSetForegroundWindowおよびSetFocus)を追加しました。

Outlook 2016と共にドイツ語版のWindows 10で動作します。

新しい証明書を生成することはできませんでした([スタート]を押し​​て「証明書」を入力しても何も表示されませんでした)が、署名時にリストで別の証明書を選択しただけです。


これは、アプリケーションがちょうど点滅しますが、前に通知ウィンドウをもたらすものではありません
KIC
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.