OLKeeper | |
Der OLKeeper verhindert zuverlässig, dass Sie Microsoft Outlook unbeabsichtigt schlieÃen und so etwa wichtige Emails verpassen würden. |
Häufig hat ein Outlook-Programierer die Aufgabe, während der Bearbeitung einer E-Mail ein eigenes Formular anzuzeigen, um z.B. weitere Daten vom Anwender abzufragen
Wenn der Anwender Microsoft Word als Maileditor nutzt, dann gibt es ein Problem: Ihr Code läuft im Prozess Outlooks, während der Maileditor im Prozess Words läuft. Das bedeutet z.B., dass Sie Ihr Formular nicht modal zum Mailfenster anzeigen können; ohne Tricks gelingt es nicht einmal, das Formular in den Vordergrund zu bringen oder ihm gar den Fokus zu geben.
Dr. Jürgen Thümmler stellt die DLL dsmodal kostenlos zur Verfügung: Damit können Sie ganz einfach ein beliebiges Fenster modal zu einem Fenster eines anderen Prozesses oder systemmodal anzeigen.
Das folgende Beispiel zeigt, wie Sie die nötigen Fensterhandles ermitteln und dsmodal verwenden. Bitte kopieren Sie die dsmodal.dll in das Systemverzeichnis (..winntsystem32), damit sie gefunden wird.
Im Beispiel wird ein VB-Formular verwendet; weisen Sie vorm Laden des Formulars bitte der Eigenschaft ParentWindowCaption die Caption-Eigenschaft des Mailfensters zu (Inspector.Caption).
Mit ein paar kleinen Ãnderungen können Sie das Beispiel auch in VBA verwenden. Da es dort kein Form_Load-Ereignis gibt, könnten Sie den Code z.B. einmalig im Activate-Ereignis aufrufen. AuÃerdem gibt es im VBA-UserForm keine Eigenschaft für das Fensterhandle. Mit der Caption-Eigenschaft und der gezeigten FindChildWindowText-Funktion ist dessen Ermittlung aber kein Problem.
Private Declare Function MakeModal& Lib "dsmodal" _ (ByVal AppHwnd&, ByVal hwndDest&, Optional ByVal Beep& = 0) Public ParentWindowCaption As String Private Sub Form_Load() Dim lParent As Long Dim lMe As Long lParent = FindChildWindowText(GetDesktopWindow, ParentWindowCaption) ' VB Forms: lMe = Me.hwnd Call MakeModal(lMe, lParent, 1) End Sub Private Sub Form_Unload(Cancel As Integer) Call MakeModal(0, 0, 0) End Sub
ReplyAll | |
Mit diesem Addin für Outlook erhalten Sie in verschiedenen Situationen eine Warnung, bevor Sie auf eine Email versehentlich allen anderen Empfängern antworten. |