1

I manage to open Outlook Elements like mails or task with this code:

import win32com.client as win32

outlook = win32.gencache.EnsureDispatch('Outlook.Application')
new_mail = outlook.CreateItem(4)
new_mail.Display(True)

And its possible to open Excel with this code:

excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = True

But how can I just open the main window of outlook? Can't find any functions or numbers for the "createItem" to just open the normal outlook window.

Someone got ideas?

I tried to search throu the MS VBA Api but couldnt find any solution

0m3r
  • 12,286
  • 15
  • 35
  • 71

3 Answers3

1

Inspired by this, one option might be:

outlook.Session.GetDefaultFolder(6).Display()

where 6 corresponds to the inbox as documented here.

BigBen
  • 46,229
  • 7
  • 24
  • 40
0

You need to display an Explorer window of Outlook. The Explorers.Add method creates a new instance of the explorer window, then you just need to call the Explorer.Display method which displays a new Explorer object for the folder. The Display method is supported for explorer and inspector windows for the sake of backward compatibility. To activate an explorer or inspector window, use the Activate method instead. Here is the sample VBA code which opens a new explorer window for the Drafts folder in Outlook:

Sub DisplayDrafts() 
 Dim myExplorers As Outlook.Explorers 
 Dim myOlExpl As Outlook.Explorer 
 Dim myFolder As Outlook.Folder 
 
 Set myExplorers = Application.Explorers 
 Set myFolder = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderDrafts) 
 
 Set myOlExpl = myExplorers.Add(myFolder, olFolderDisplayNoNavigation) 
 
 myOlExpl.Display  
End Sub

The Outlook object model is common for all programming languages, so I think you will find the sequence of property and method calls that should be used to get the job done.

Eugene Astafiev
  • 47,483
  • 3
  • 24
  • 45
0

To start Outlook application, try os.startfile("outlook") or see example

import psutil
import os


class Outlook:
    @staticmethod
    def is_outlook_running():
        for p in psutil.process_iter(attrs=['pid', 'name']):
            if p.info['name'] == "OUTLOOK.EXE":
                print("Yes", p.info['name'], "is running")
                break
        else:
            print("No, Outlook is not running")
            os.startfile("outlook")
            print("Outlook is starting now...")


if __name__ == "__main__":
    outlook = Outlook()
    outlook.is_outlook_running()
0m3r
  • 12,286
  • 15
  • 35
  • 71