StartDownloadsServiceBeispieleWorkshopsKontakt DeutschEnglish
 
Beispiele
Allgemein
Outlook®
 
Awarded by
Microsoft since 2005:
mvp logo
VBOffice Info
Besucher1388800
Aufrufe5086561
Links
Impressum
Datenschutz
Kontakt
E-Mail: Fokus aufs Nachrichten-Textfeld setzen
Autor: Michael BauerHomepage
Datum: 30.01.2006Zugriffe: 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.

' <modBodyFocus.bas>
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
            ' plain/text: ClassName="RichEdit20A", html: ClassName="Internet Explorer_Server"
            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
            ' plain
            lHnd = FindChildClassName(lRes, "RichEdit20W")
            If lHnd = 0 Then
              ' hmtl
              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
' </modBodyFocus.bas>

 
 

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]

So entgeht Ihnen kein Auftrag mehr:
Telefonservice und Sekretariatsservice