Convert a raw pointer to IDispatch

Roger That fabsk+news at free.fr
Thu Feb 17 16:25:13 EST 2005


Le Thu, 17 Feb 2005 19:22:16 +0100, Thomas Heller a écrit :

>> I am trying to use the function "CreateStreamOnHGlobal" from python code
>> (I need to pass an IStream object to MSXML, like I do in C++ code).
>>
>> I was able to retrieve a pointer on the IStream object in this way:
>>
>> from ctypes import *
>>
>> stream = c_int()
>> windll.ole32.CreateStreamOnHGlobal(c_long(0), c_long(1), byref(stream))
>> print "%x"%stream.value
>>
>> The problem is that I would like to attach this pointer to a python
>> IDispatch object (in Python only, not using a C++ DLL to do the stuff).
>> Do you know a way to do it ?
> 
> What do you want to do with this pointer? Pass it to a function called via
> ctypes?
 

Once it is a IDispatch object (like the IDispatch object returned by
"win32com.client.Dispatch"), I will call the IStream methods on it and
pass it to a DOMDocument of MSXML. It should look like that:

stream = c_int()
windll.ole32.CreateStreamOnHGlobal(c_long(0), c_long(1), byref(stream))
stream_obj = some_conversion(stream)
# IDispatch call
stream_obj.Write("some data", 9)

doc = win32com.client.Dispatch("MSXML2.DOMDocument.4.0")
doc.load(stream_obj)




More information about the Python-list mailing list