SAM | |
Determine the "identity" of your emails. Set with SAM the sender and the folder folder for sent items with the help of rules. |
With the Win32 API you can set the focus or the cursor to any control that supports it. You just need to know the structure of the windows. That structure can be examined with a tool like 'Spy++'. In this sample for Outlook 2000 and 2003 we set the cursor into the notes field of an emailö
Add a new module via Insert/Module, and paste the code there. Additionally, you need this macro: Get Outlook Version
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 GetOutlookVersion Case 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 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
Category-Manager | |
With Category-Manager you can group your Outlook categories, share them with other users, filter a folder by category, automatically categorize new emails, and more. You can use the Addin even for IMAP. |