| | Awarded by Microsoft since 2005: |  |
| | VBOffice Info | | Besucher | 1388800 | | Aufrufe | 5086561 |
| |
|
| |
| Autor: Michael Bauer | Homepage | | Datum: 30.01.2006 | Zugriffe: 20579 | | | | Beschreibung
Sie können
nicht über das Outlook Objektmodell den Fokus auf bestimmte
Steuerelemente setzen. Das folgende Beispiel demonstriert für
Outlook 2000 und 2003, wie mithilfe einiger Funktionen aus dem Win32 API der
Fokus auf das Textfeld einer geöffneten E-Mail gesetzt werden kann. RTF
formatierte Mails werden nicht berücksichtigt. |
Option Explicit
Private Declare Function FindWindow Lib "USER32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetClassName Lib "USER32" Alias "GetClassNameA" _
(ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetWindow Lib "USER32" (ByVal hwnd _
As Long, ByVal wCmd As Long) As Long
Private Declare Function SetForegroundWindow Lib "USER32" _
(ByVal hwnd As Long) As Long
Private Const GW_CHILD = 5
Private Const GW_HWNDNEXT = 2
Public Function SetFocusOnBody(sInspectorCaption As String) As Boolean
Dim lHwnd As Long
lHwnd = GetInspectorHandle(sInspectorCaption)
lHwnd = GetBodyHandle(lHwnd)
If lHwnd Then
SetFocusOnBody = CBool(SetForegroundWindow(lHwnd))
End If
End Function
Private Function FindChildClassName(ByVal lHwnd As Long, _
sFindName As String _
) As Long
Dim lRes As Long
lRes = GetWindow(lHwnd, GW_CHILD)
If lRes Then
Do
If GetClassNameEx(lRes) = sFindName Then
FindChildClassName = lRes
Exit Function
End If
lRes = GetWindow(lRes, GW_HWNDNEXT)
Loop While lRes <> 0
End If
End Function
Private Function GetBodyHandle(ByVal lInspectorHwnd As Long) As Long
Dim lRes As Long
Dim lHnd As Long
DetermineOutlookVersion Application
Select Case OutlookVersion
Case olVersion_9
lRes = FindChildClassName(lInspectorHwnd, "AfxWnd")
If lRes Then
lRes = GetWindow(lRes, GW_CHILD)
If lRes Then
lRes = FindChildClassName(lRes, "AfxWnd")
If lRes Then
lRes = GetWindow(lRes, GW_CHILD)
If lRes Then
GetBodyHandle = GetWindow(lRes, GW_CHILD)
End If
End If
End If
End If
Case olVersion_11
lRes = FindChildClassName(lInspectorHwnd, "AfxWndW")
If lRes Then
lRes = GetWindow(lRes, GW_CHILD)
If lRes Then
lRes = FindChildClassName(lRes, "AfxWndA")
If lRes Then
lRes = FindChildClassName(lRes, "AfxWndW")
If lRes Then
lHnd = FindChildClassName(lRes, "RichEdit20W")
If lHnd = 0 Then
lHnd = FindChildClassName(lRes, "Internet Explorer_Server")
End If
GetBodyHandle = lHnd
End If
End If
End If
End If
End Select
End Function
Private Function GetClassNameEx(ByVal lHwnd As Long) As String
Dim lRes As Long
Dim sBuffer As String * 256
lRes = GetClassName(lHwnd, sBuffer, 256)
If lRes <> 0 Then
GetClassNameEx = left$(sBuffer, lRes)
End If
End Function
Private Function GetInspectorHandle(ByVal sCaption As String) As Long
GetInspectorHandle = FindWindow("rctrl_renwnd32", sCaption)
End Function
|
| | |
| | |  | ReplyAll warnt Sie, bevor Sie unbeabsichtigt allen Empfängern
einer E-Mail antworten oder wenn Sie ein vertraulicher BCC-Empfänger der E-Mail ... [weiter] |
| | |  | Blitzschneller Zugriff auf die Hauptkategorienliste, gemeinsame Kategorien im Netzwerk, eine Erinnerungsfunktion ... [weiter] |
| | |  | SAM legt automatisch Absender, Signatur und Speicherort für gesendete Mails fest, z.B. anhand der ... [weiter] |
| | |  | OLKeeper verhindert zuverlässig, dass Mitarbeiter Outlook schließen und dadurch Termine oder E-Mails ... [weiter] |
| | |
|