View Single Post
Old 08-02-2011, 05:27 AM   #1
standard7482
 
Posts: n/a
Default VBOffice - Beispiele

Awarded by
Microsoft:E-Mail: Fokus aufs Nachrichten-Textfeld setzen</h1Autor: Michael BauerHomepageDatum: 30.01.2006Zugriffe: 14401 Beschreibung
Sie k&ouml;nnen nicht &uuml;ber das Outlook Objektmodell den Fokus auf bestimmte Steuerelemente setzen.
Das folgende Beispiel demonstriert f&uuml;r Outlook 2000 und 2003,Pandora Jewelry Sale, wie mithilfe einiger Funktionen aus dem Win32 API der Fokus auf das Textfeld einer ge&ouml;ffneten E-Mail gesetzt werden kann. RTF formatierte Mails werden nicht ber&uuml;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,Tiffany Silver Jewelry, "AfxWnd") If lRes Then lRes = GetWindow(lRes,Tiffany Jewelry Sale, 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,Tiffany Blue, 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,Tiffany Crystal, "AfxWndA") If lRes Then lRes = FindChildClassName(lRes,Tiffany Armreif,WHFoods Oranges, "AfxWndW") If lRes Then ' plain lHnd = FindChildClassName(lRes,Tiffany Crystal, "RichEdit20W") If lHnd = 0 Then ' hmtl lHnd = FindChildClassName(lRes,Tiffany Diamond Earrings, "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>
  Reply With Quote

Sponsored Links