Python with COM
Thursday, February 5th, 2009
The Win32 extensions for Python have been a lifesaver for me many times. I consider them one of the best ways of scripting the windows platform. Unfortunately there’s not as much documentation as one could hope for.
A useful trick I discovered recently is the following. Say you’re trying to use a COM interface such as Microsoft Message Queuing. You can create a message queue object as follows:
import win32com, win32com.client
serverInfo = win32com.client.Dispatch("MSMQ.MSMQQueueInfo")
However, the next step requires constants from the messaging API such as MQ_SEND_ACCESS. These can be made available to win32com.client.constants in two ways. One involves running makepy, but a more robust alternative is as follows:
import win32com, win32com.client
win32com.client.gencache.EnsureDispatch("MSMQ.MSMQQueueInfo")
win32com.client.gencache.EnsureDispatch("MSMQ.MSMQMessage")
from win32com.client import constants
serverInfo = Dispatch("MSMQ.MSMQQueueInfo")
serverInfo.FormatName = <format name>
return serverInfo.Open(constants.MQ_SEND_ACCESS, constants.MQ_DENY_NONE)
The order is important. Once EnsureDispatch has been called, win32com.client.constants can be imported and will have the correct values available.
This entry is filed under Programming, python. You can follow any responses to this entry through the RSS 2.0 feed.You can leave a response, or trackback from your own site.