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

Cómo hacer que los recordatorios del calendario de Outlook se mantengan en la cima en Windows 7

Estoy empezando a usar Windows 7 y quiero saber cómo hacer que mis recordatorios de Outlook aparezcan y se muestren de forma prominente. Se abren discretamente, como una ventana más de la pila de Outlook en la barra de tareas. Como resultado, sigo pasándolos por alto porque aparecen detrás de todo lo demás.

¿Cómo puedo hacer que sea menos fácil pasarlos por alto?

(Evidentemente, uno no suele querer aplicaciones molestas que se ponen en primer plano. Pero hay algunos lugares donde tal comportamiento es deseable, y los recordatorios del calendario de Outlook son uno de ellos).

Respuestas (11)

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

Tuve el mismo problema con el Outlook 2010. Usa los pasos que se mencionan a continuación, funciona como un encanto. No te olvides de activar todas las macros: Trust Center > Configuración de macros.

  • Crear un certificado digital para más tarde: Presiona Inicio y escribe ‘certificado’, selecciona ‘Certificado Digital para Proyectos VBA’
  • Introduce un nombre para tu certificado. Haga clic en OK. Abra Outlook y presione Alt + F11 para iniciar el editor de VBA.
  • En el árbol de la izquierda, expanda ‘Microsoft Office Outlook Objects’ y haga doble clic en ‘ThisOutlookSession’
  • Pegue en este código:

  • Firme la macro para que se ejecute: Herramientas > Firma digital… y elija el certificado que creó anteriormente

  • Cierre la ventana VBA

  • Habilite todas las macros en Archivo > Opciones > Centro de Confianza \N - Configuración del Centro de Confianza \N - Configuración de la Macro

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

AutoHotKey también puede ser usado para resolver esto. Este script pondrá la ventana de recordatorio en la parte superior sin robar el foco (probado 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
}

Script AHK - Compilado EXE

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

La mejor respuesta que he encontrado está aquí: Cómo hacer que los recordatorios de citas de Outlook aparezcan de nuevo frente a otras ventanas usando un simple VBA. ](http://www.darthandy.com/2011/02/how-to-get-outlook-appointment.html)

Implica añadir unas pocas líneas de código VBA simple a “ThisOutlookSession”. Ahora, aparece una ventana cada vez. Mucho mejor.

  • Crear un certificado digital para más tarde
  • Presione Inicio y escriba ‘certificado’, seleccione ‘Certificado Digital para Proyectos VBA’
  • Introduzca un nombre para su certificado
  • Hecho
  • Abra Outlook y presione Alt + F11 para iniciar el editor VBA.
  • En el árbol de la izquierda, expanda ‘Microsoft Office Outlook Objects’ y haga doble clic en ‘ThisOutlookSession’
  • Pegue en este código, modificando el texto entre comillas según sus preferencias. Deja las comillas dentro.

  • Firma la macro para que se ejecute yendo a Herramientas > Firma Digital… y eligiendo el certificado que has creado antes

  • Cierra la ventana VBA

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

A partir de la versión 1803 (febrero de 2018), la opción “Mostrar recordatorios en la parte superior de otras ventanas” ya está disponible. No parece estar activada por defecto.

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

Igual que el anwer de Gullu, pero con cambios para acomodar el título de la ventana:

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

No hay manera. Nuestra compañía trató de escalar a Microsoft directamente. Una cosa que la gente hace aquí es asignarle un sonido más desagradable, para ayudar a notarlo. Pero Microsoft nos ha dicho que es por diseño.

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

Utilicé Filebox eXtender y cuando llega el primer recordatorio lo abro y hago clic en el nuevo icono de ‘pin’ en la parte superior derecha de la barra de título. Luego, cuando el siguiente recordatorio entra, aparece en primer plano…

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

Esto también me estaba molestando. Después de una intensa búsqueda encontré una respuesta parcial: http://www.pcreview.co.uk/forums/hidden-outlook-reminders-t3972914.html

Si cambias el ajuste de “Botones de la barra de tareas” en “Propiedades de la barra de tareas y del menú de inicio” a “Nunca combinar”, entonces la agrupación se separa y el recordatorio aparece delante de cualquier otra cosa que tengas abierta.

Intenté probarlo y encontré que era inconsistente; una vez se mantuvo oculto detrás de lo que estaba trabajando, y otra vez apareció delante. En ambos casos había un icono en la barra de tareas que se veía diferente del propio Outlook, así que había al menos una posibilidad de que lo notara.

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

Encontré un complemento llamado ShowReminders http://www.sagelamp.com/pages/showreminders.aspx ), que lleva la ventana de recordatorios a la cima. Incluso funciona cuando minimizas la ventana de recordatorios.

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

Esta es una versión mejorada de tbone’s answer que funciona en las versiones alemanas.

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

He añadido títulos de ventanas en alemán y también algunas nuevas funciones BringWindowToTop , SetForegroundWindow y SetFocus ).

Funciona en mi Windows 10 alemán junto con Outlook 2016.

No logré no generar un nuevo certificado (al pulsar Inicio e introducir “certificado” no se reveló nada), sino que simplemente seleccioné otro certificado de la lista al firmar.

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

Finalmente encontré una solución simple usando Outlook VBA y un simple EXE.

Así es como nunca más se pierde una cita de reunión de Outlook.

¿Por qué una aplicación exe independiente sólo para este propósito? Bueno, yo tenía la caja roja grande incrustada en el VBA, pero esa solución estaba llena de problemas (creo que es porque tengo que usar hwnd y otras propiedades inusuales del sistema para mantener la caja roja grande en la parte superior) . Así que para simplificar las cosas, ¿por qué no un EXE básico que haga una cosa? Puedes usar las herramientas gratuitas de Microsoft (Visual Studio Community 2015 es gratuito).

Este es el código EXE. Una simple aplicación de formulario de Windows con un formulario. Compila este código.

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

Y esto es todo lo que necesito en la perspectiva VBA. Pon esto en 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