Debugging COM Servers
At
this point, we need to briefly explain how to debug a COM server. The
theory behind this is covered in Chapter 12.
It’s easy to use: just run the COM server script
(comservers.py in our case) with the argument
—debug: note the double hyphen. The output
of any print statements in the server code can
then be seen in the Trace Collector window on the PythonWin
Tools menu.
Now it’s time to work with the form passed in from Visual Basic:
idForm = win32com.client.Dispatch(vbForm)
As before, you wrap the VB object using Dispatch:
# call a method we defined on the VB form # arrays are converted automatically to Python tuples we can access (width, height) = idForm.GetClientArea() account = idForm.GetAccount()
The previous line is interesting for two reasons. First, you called a
public method of the VB form you defined. This works in exactly the
same way as calling methods of built-in VB objects. Second, you
received back an array. Earlier we saw that a Python list or tuple
can be passed to VB, where it’s interpreted as a
variant array. The
GetClientArea()
method of our VB form returned a
two-element variant array, which is received as a straightforward
tuple. You can pass arrays easily in both directions. (Bear in mind
that if VB returns an array containing strings, they are Unicode
strings that must be tidied with the str
function).
# access a built-in property of the VB form idForm.Caption = "Account " + account ############################################################# ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access