Je commence tout juste à utiliser Windows 7 et je veux savoir comment faire apparaître mes rappels Outlook et se montrer bien en vue. Ils continuent à s'ouvrir discrètement, comme une autre fenêtre de la pile Outlook dans la barre des tâches. En conséquence, je continue de les oublier car ils apparaissent derrière tout le reste.
Comment puis-je les rendre moins faciles à oublier?
(De toute évidence, on ne veut généralement pas d'applications désagréables qui se mettent au premier plan. Mais il existe quelques endroits où un tel comportement est souhaitable, et les rappels du calendrier Outlook en font partie.)
J'ai eu le même problème avec Outlook 2010. Utilisez les étapes mentionnées ci-dessous, cela fonctionne comme un charme. N'oubliez pas d'activer toutes les macros: Centre de gestion de la confidentialité> Paramètres de macro.
Coller dans ce code:
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
Signez la macro pour qu'elle s'exécute: Outils> Signature numérique ... et choisissez le certificat que vous avez créé précédemment.
AutoHotKey peut également être utilisé pour résoudre ce problème. Ce script place la fenêtre de rappel au premier plan sans voler le focus (testé avec 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
}
La meilleure réponse que j'ai trouvée est la suivante: Comment obtenir à nouveau des rappels de rendez-vous Outlook devant d'autres fenêtres à l'aide de simples VBA.
Cela implique d'ajouter quelques lignes de code VBA simple à "ThisOutlookSession". Maintenant, il ouvre une fenêtre à chaque fois. Beaucoup mieux.
- Créer un certificat numérique pour plus tard
- Appuyez sur Démarrer et tapez «certificat», sélectionnez «Certificat numérique pour les projets VBA».
- Entrez un nom pour votre certificat
- Terminé
- Ouvrez Outlook et appuyez sur Alt + F11 pour lancer l'éditeur VBA.
- Dans l’arborescence de gauche, développez "Objets Microsoft Office Outlook" et double-cliquez sur "ThisOutlookSession".
Collez dans ce code, en modifiant le texte entre guillemets selon vos préférences. Laissez les citations dans.
Private Sub Application_Reminder(ByVal Item As Object) If TypeOf Item Is AppointmentItem Then MsgBox "Message text", vbSystemModal, "Message title" End If End Sub
Signez la macro pour qu'elle s'exécute en allant dans Outils> Signature numérique… et en choisissant le certificat que vous avez créé précédemment.
- Fermer la fenêtre VBA
Identique à la réponse de Gullu ci-dessus mais avec modification pour tenir compte du titre de la fenêtre:
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
Il n'y a pas moyen. Notre société a tenté de la transmettre directement à Microsoft. Une chose que les gens font ici est de lui attribuer un son plus odieux, pour aider à le remarquer. Mais Microsoft nous a dit que c'était à dessein.
Cela m'ennuyait aussi. Après une recherche intense, j'ai trouvé une réponse partielle: http://www.pcreview.co.uk/forums/hidden-Outlook-reminders-t3972914.html
Si vous modifiez le paramètre "Boutons de la barre des tâches" sous "Propriétés de la barre des tâches et du menu Démarrer" sur "Jamais combiner", le regroupement se sépare et le rappel apparaît devant tout ce que vous avez ouvert.
J'ai essayé de le tester et j'ai constaté qu'il était incohérent. Une fois, il est resté caché derrière ce sur quoi je travaillais et une autre fois, il est apparu à l'avant. Dans les deux cas, la barre des tâches contenait une icône différente de celle d’Outlook. Il y avait donc au moins une chance que je le remarque.
J'ai utilisé Filebox eXtender et lorsque le premier rappel arrive, je l’ouvre et je clique sur la nouvelle icône représentant une épingle en haut à droite de la barre de légende. Puis, quand le prochain rappel arrive, il apparaît au premier plan ...
J'ai trouvé un add-in appelé ShowReminders ( http://www.sagelamp.com/pages/showreminders.aspx ), qui amène la fenêtre des rappels au sommet. Cela fonctionne même lorsque vous réduisez la fenêtre de rappel.
Ceci est une version améliorée de tbone's answer qui fonctionne sur les versions allemandes.
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
J'ai ajouté des titres de fenêtre en allemand et de nouvelles fonctions ( BringWindowToTop
, SetForegroundWindow
et SetFocus
).
Fonctionne sur mon Windows allemand 10 avec Outlook 2016.
Je n'ai pas pasréussi à générer un nouveau certificat (appuyer sur Démarrer et entrer «certificat» n'a rien révélé), mais j'ai simplement sélectionné un autre certificat dans la liste lors de la signature.
J'ai finalement trouvé une solution simple en utilisant Outlook VBA et un simple EXE.
Voici comment ne plus jamais manquer un rendez-vous lors d'une réunion Outlook.
Pourquoi une application exe autonome juste à cette fin? J'avais la grosse boîte rouge intégrée dans la VBA, mais cette solution posait problème (je pense que c’est parce que je dois utiliser hwnd et d’autres propriétés système inhabituelles pour garder la grosse boîte rouge au-dessus). Donc, pour simplifier les choses, pourquoi ne pas créer un EXE simple qui fasse une chose. Vous pouvez utiliser des outils gratuits de Microsoft (Visual Studio Community 2015 est gratuit).
C'est le code EXE. application de formulaire Windows simple avec un formulaire. Compilez ce code.
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
Et c'est tout ce dont j'ai besoin dans Outlook VBA. Mettez ceci dans 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