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

Como fazer com que os lembretes do calendário do Outlook permaneçam no topo no Windows 7

Estou apenas a começar a usar o Windows 7 e quero saber como fazer com que os meus lembretes do Outlook apareçam e se mostrem de forma proeminente. Eles continuam a abrir-se discretamente, pois apenas mais uma janela na pilha do Outlook na barra de tarefas. Como resultado, continuo a ignorá-los porque aparecem atrás de tudo o resto.

Como faço para que sejam menos fáceis de ignorar?

(Claramente, normalmente não se quer aplicações desagradáveis que se empurram para a linha da frente. Mas existem alguns locais onde tal comportamento é desejável, e os lembretes do calendário do Outlook são um deles).

Respostas (11)

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

Tive o mesmo problema com o Outlook 2010. Use os passos mencionados abaixo, ele funciona como um encanto. Não se esqueça de activar todas as macros: Trust Center > Macro Settings.

  • Criar um certificado digital para mais tarde: Clique em Iniciar e digite ‘certificado’, selecione ‘Certificado Digital para Projetos VBA’
  • Digite um nome para o seu certificado. Clique em OK. Abra Outlook e carregue em Alt + F11 para iniciar o editor VBA.
  • Na árvore à esquerda, expanda ‘Microsoft Office Outlook Objects’ e faça duplo clique em ‘ThisOutlookSession’
  • Cole neste código:

  • Assine a Macro para que esta corra: Ferramentas > Assinatura Digital… e escolha o certificado que criou anteriormente

  • Feche a janela VBA

  • Active todas as macros em Ficheiro > Opções > Centro de Confiança > Configurações do Centro de Confiança > Configurações da Macro

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

A AutoHotKey também pode ser utilizada para resolver este problema. Este script irá colocar a janela de lembrete no topo sem roubar o foco (testado com 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 - Compiled EXE

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

A melhor resposta que encontrei está aqui: [ Como obter lembretes de compromissos do Outlook para aparecer de novo em frente de outras janelas usando alguma VBA simples. A melhor resposta que encontrei foi:

Implica adicionar algumas linhas de código VBA simples a “ThisOutlookSession”. Agora, aparece uma janela de cada vez. Muito melhor.

  • Criar um certificado digital para mais tarde
  • Carregue em Start e digite ‘certificate’, seleccione ‘Digital Certificate for VBA Projects’
  • Introduza um nome para o seu certificado
  • Done
  • Abra o Outlook e carregue em Alt + F11 para iniciar o editor VBA.
  • - Na árvore à esquerda, expanda ‘Microsoft Office Outlook Objects’ e faça duplo clique em ‘ThisOutlookSession’
  • Cole neste código, modificando o texto entre aspas para se adequar às suas preferências. Deixe as aspas em.

  • Assine a Macro para que esta funcione indo a Ferramentas > Assinatura Digital… e escolhendo o certificado que criou anteriormente

  • Feche a janela VBA

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

A partir da Versão 1803 (Fevereiro de 2018), a opção “Mostrar lembretes em cima de outras janelas” está agora disponível. Não parece estar activada por defeito.

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

O mesmo que Gullu’s anwer acima, mas com alteração para acomodar diferentes títulos de janela:

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

Não há hipótese. A nossa empresa tentou escalá-la directamente para a Microsoft. Uma coisa que as pessoas aqui fazem é atribuir-lhe um som mais desagradável, para ajudar a repará-lo. Mas a Microsoft disse-nos que é por concepção.

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

Usei Filebox eXtender e quando chega o primeiro lembrete abro-o e clico no novo ícone ‘pin’ no canto superior direito da barra de título. Depois, quando chega o próximo lembrete, ele vem em primeiro plano.

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

Isto também me estava a incomodar. Depois de uma busca intensa, encontrei uma resposta parcial: http://www.pcreview.co.uk/forums/hidden-outlook-reminders-t3972914.html

Se você mudar a configuração “Botões da Barra de Tarefas” sob a “Barra de Tarefas e Propriedades do Menu Iniciar” para “Nunca combinar”, então o agrupamento se separa e o lembrete aparece na frente do que quer que você tenha aberto.

Tentei testá-lo e descobri que era inconsistente; uma vez ficou escondido atrás do que eu estava trabalhando, e outra vez apareceu na frente. Em ambos os casos havia um ícone na barra de tarefas que parecia diferente do próprio Outlook, por isso havia pelo menos uma hipótese de eu o notar.

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

Encontrei um addin chamado ShowReminders http://www.sagelamp.com/pages/showreminders.aspx ), que traz a janela de lembretes para o topo. Funciona mesmo quando se minimiza a janela de lembretes.

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

Esta é uma versão melhorada da resposta da tbone que funciona nas versões alemãs.

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

Adicionei títulos de janelas alemãs e também algumas novas funções BringWindowToTop , SetForegroundWindow e SetFocus )).

Funciona no meu Windows 10 alemão juntamente com o Outlook 2016.

Consegui não gerar um novo certificado (premir Start e introduzir “certificado” não revelou nada), mas simplesmente seleccionei outro certificado na lista ao assinar.

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

Finalmente encontro uma solução simples utilizando o Outlook VBA e um simples EXE.

Aqui está como nunca mais faltar a uma reunião do Outlook.

Porquê um pedido de exe isolado apenas para este fim? Bem eu tinha a grande caixa vermelha embutida na VBA, mas essa solução estava cheia de problemas (acredito que é porque tenho que usar hwnd e outras propriedades incomuns do sistema para manter a grande caixa vermelha em cima). Portanto, para simplificar as coisas, porque não um EXE básico que faz uma coisa. Você pode usar ferramentas grátis da microsoft (Visual studio Community 2015 é grátis).

Este é o código EXE. aplicação simples de formulário windows com um formulário. Compilar 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

E isto é tudo o que eu preciso na perspectiva VBA. Colocar isto no 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