2011-03-01 21:14:47 +0000 2011-03-01 21:14:47 +0000
125
125

Come fare in modo che i promemoria del calendario di Outlook rimangano al top in Windows 7

Ho appena iniziato a usare Windows 7 e voglio sapere come far apparire i miei promemoria di Outlook e mostrarsi in modo prominente. Continuano ad aprirsi discretamente, come un'altra finestra nella pila di Outlook sulla barra delle applicazioni. Di conseguenza, continuo a ignorarli perché compaiono dietro a tutto il resto.

Come faccio a renderli meno facili da ignorare?

(Chiaramente, di solito non si vogliono app odiose che si spingono in primo piano. Ma ci sono alcuni luoghi in cui tale comportamento è auspicabile, e i promemoria del calendario di Outlook sono uno di questi).

Risposte (11)

62
62
62
2012-08-16 15:19:38 +0000

Ho avuto lo stesso problema con Outlook 2010. Utilizza i passaggi indicati di seguito, funziona a meraviglia. Non dimenticate di attivare tutte le macro: Trust Center > Macro Settings.

  • Crea un certificato digitale per dopo: Premi Start e digita “certificato”, seleziona “Certificato digitale per progetti VBA”
  • Inserisci un nome per il tuo certificato. Fare clic su OK. Aprire Outlook e premere Alt + F11 per avviare l'editor VBA.
  • Nell'albero a sinistra, espandere ‘Microsoft Office Outlook Objects’ e fare doppio clic su ‘ThisOutlookSession’
  • Incollare in questo codice:

  • Firmare la macro in modo che venga eseguita: Strumenti > Firma digitale… e scegliere il certificato creato in precedenza

  • Chiudere la finestra VBA

  • Attivare tutte le macro in File > Opzioni > Centro di fiducia > Impostazioni Centro di fiducia > Impostazioni Macro

18
18
18
2016-02-02 12:58:33 +0000

Per risolvere questo problema si può usare anche AutoHotKey. Questo script metterà la finestra di promemoria in cima senza rubare la messa a fuoco (testato con 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 Script - Compilato EXE

13
13
13
2012-03-13 23:10:09 +0000

La risposta migliore che ho trovato è qui: Come fare in modo che i promemoria degli appuntamenti di Outlook compaiano di nuovo davanti ad altre finestre usando qualche semplice VBA.

Si tratta di aggiungere alcune righe di semplice codice VBA a “ThisOutlookSession”. Ora, si apre una finestra ogni volta. Molto meglio. ]

  • Creare un certificato digitale per poi
  • Premere Start e digitare ‘certificato’, selezionare ‘Certificato digitale per progetti VBA’
  • Inserire un nome per il certificato
  • Fatto
  • Aprire Outlook e premere Alt + F11 per avviare l'editor VBA.
  • Nell'albero a sinistra, espandere ‘Microsoft Office Outlook Objects’ e fare doppio clic su ‘ThisOutlookSession’
  • Incollare questo codice, modificando il testo tra virgolette in base alle proprie preferenze. Lasciare le virgolette in.

  • Firmare la macro in modo che venga eseguita andando su Strumenti > Firma digitale… e scegliendo il certificato creato in precedenza

  • Chiudere la finestra VBA

7
7
7
2018-06-01 16:58:06 +0000

A partire dalla versione 1803 (febbraio 2018) è ora disponibile l'opzione “Mostra i promemoria sopra le altre finestre”. Non sembra essere attivata di default.

6
6
6
2015-02-03 19:29:07 +0000

Come la torre di Gullu di cui sopra, ma con modifiche per adattarsi ai diversi titoli delle finestre:

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
6
6
2011-03-01 21:34:50 +0000

Non c'è modo. La nostra azienda ha cercato di passare direttamente a Microsoft. Una cosa che la gente fa qui è assegnargli un suono più odioso, per aiutare a notarlo. Ma Microsoft ci ha detto che è un progetto.

3
3
3
2011-12-21 00:26:04 +0000

Ho usato Filebox eXtender e quando arriva il primo promemoria lo apro e clicco sulla nuova icona ‘pin’ in alto a destra della barra delle didascalie. Poi quando arriva il prossimo promemoria, viene in primo piano…

3
3
3
2011-05-10 17:21:18 +0000

Anche questo mi stava dando fastidio. Dopo un'intensa ricerca ho trovato una risposta parziale: http://www.pcreview.co.uk/forums/hidden-outlook-reminders-t3972914.html &003

Se si cambia l'impostazione “Taskbar buttons” sotto “Taskbar and Start Menu Properties” in “Never combine”, allora il raggruppamento si separa e il promemoria si apre davanti a qualsiasi altra cosa si abbia aperto.

Ho provato a testarlo e ho scoperto che era incoerente; una volta è rimasto nascosto dietro a quello su cui stavo lavorando, e un'altra volta è saltato fuori davanti. In entrambi i casi c'era un'icona sulla barra delle applicazioni che sembrava diversa da Outlook stesso, quindi c'era almeno una possibilità che la notassi.

1
1
1
2013-08-13 12:58:14 +0000

Ho trovato un addin chiamato ShowReminders http://www.sagelamp.com/pages/showreminders.aspx ), che porta la finestra dei promemoria in cima. Funziona anche quando si riduce al minimo la finestra dei promemoria.

0
0
0
2015-11-10 11:12:56 +0000

Questa è una versione migliorata della risposta di tbone che funziona sulle versioni tedesche.

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

Ho aggiunto i titoli delle finestre tedesche e anche alcune nuove funzioni BringWindowToTop , SetForegroundWindow e SetFocus ).

Funziona sul mio Windows 10 tedesco insieme a Outlook 2016.

Non_ sono riuscito a generare un nuovo certificato (premendo Start e inserendo “certificato” non è emerso nulla), ma ho semplicemente selezionato un altro certificato nella lista al momento della firma.

0
0
0
2015-08-07 19:48:32 +0000

Finalmente trovo una soluzione semplice utilizzando Outlook VBA e un semplice EXE.

Ecco come non perdere mai più l'appuntamento di Outlook.

Perché un'applicazione exe stand alone solo per questo scopo? Beh, avevo la grande scatola rossa incorporata nel VBA, ma quella soluzione era piena di problemi (credo che sia perché devo usare hwnd e altre proprietà di sistema insolite per mantenere la grande scatola rossa in cima). Quindi, per rendere le cose più semplici, perché non un EXE di base che faccia una cosa sola. È possibile utilizzare gli strumenti gratuiti di microsoft (Visual studio Community 2015 è gratuito).

Questo è il codice EXE. semplice forma di applicazione di Windows con un modulo. Compila questo codice.

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
``` ```
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

E questo è tutto ciò di cui ho bisogno nell'outlook VBA. Mettetelo in ThisOutlookSession

&001