I found the comtypes equivalent if that helps any. The generated comtypes file looks like this:<br><br> COMMETHOD([dispid(1610743812), helpstring(u'GetInterface() method')], HRESULT, 'GetInterface',<br> ( ['in'], POINTER(GUID), 'riid' ),<br>
( ['retval', 'out'], POINTER(POINTER(IUnknown)), 'ppUnknown' )),<br><br>With the above, I'm able to use the comtypes.GUID.GUID structure to pass the information over through the COM. Unfortunately I still can't find the win32com equivalent of passing my structure through the COM.<br>
<br>The win32com generated py file is saying that it expects a VT_RECORD, but from above, maybe it should really be expecting a POINTER ? or VT_POINTER ? I tried to modify the win32com generated file to take a VT_PTR but that didn't seem to help. I really don't want to redo my infastructure in comtypes, so if anyone knows the win32com equivalent, that would be awesome.<br>
<br>In the meantime, I'll keep digging, and will post if I find more.<br><br><br><div class="gmail_quote">On Tue, Mar 11, 2008 at 12:58 PM, Kevin Patterson <<a href="mailto:patter001@gmail.com">patter001@gmail.com</a>> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Old thread, but I got a little more data on the function. The function actually has a REFIID as the first parameter. This apparently is a standard structure for C COM code. I'm not entirely sure why the win32com changes the REFIID to be a VT_RECORD. Does the following definition of the functions help at all (they are from the IDL file)<br>
<br><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; color: navy; font-family: Arial;">HRESULT GetInterface(
[in] REFIID riid, [out, retval, iid_is(riid)] IUnknown**
ppUnknown);<br>should be same as:<br></span></font><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; color: navy; font-family: Arial;">HRESULT GetInterface(
[in] GUID* pGuid, [out, retval, iid_is(pGuid)] IUnknown**
ppUnknown);</span></font><div><div></div><div class="Wj3C7c"><br><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; color: navy; font-family: Arial;"><br></span></font><br><div class="gmail_quote">On Mon, Feb 4, 2008 at 6:44 PM, Mark Hammond <<a href="mailto:mhammond@skippinet.com.au" target="_blank">mhammond@skippinet.com.au</a>> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div>> guid = win32com.client.Record("GUID", some_ob)<br>
<br>
> I don't have the some_obj that allows me to build "GUID".<br>
<br>
</div>It should be any object from the same typelib - almost certainly whatever<br>
object you intend passing this record to.<br>
<div><br>
> <a href="http://VB.NET" target="_blank">VB.NET</a> (GetType) and C++ (__uuid) both already know that a GUID is a<br>
record.<br>
<br>
</div>C++ doesn't know it is a COM record. A COM record is something quite<br>
different to a C/C++ struct or from .NET types. A COM record is<br>
specifically designed to be cross-language.<br>
<div><br>
> It seems the python CLSID is the same thing, but i don't know what to call<br>
<br>
> to get a CLSID that is a com_record type.<br>
<br>
</div>As I've explained, we are looking for the COM record definition you are<br>
trying to use. A C++ struct definition for a GUID is *not* what you are<br>
looking for - you are looking for the COM record definition of a GUID. I<br>
see now that you simply copied me a C++ struct you found, which is not at<br>
all useful in this context.<br>
<br>
To clarify: in a *typelib* you will find a struct definition that you are<br>
trying to use. Finding a struct definition of the same name somewhere else<br>
is not suitable.<br>
<div><br>
> Am I understanding the win32com.client.Record call correctly? It needs<br>
GUID to be defined by the<br>
> COM right?<br>
<br>
</div>Not "defined by COM", but "defined using COM" - the author of a typelib must<br>
have defined it somewhere.<br>
<div><br>
> Its odd b/c the GIUD (python's CLSID) is all over the COM definitions its<br>
just type<br>
> VT_RECORD type that I'm not understanding how to convert to.<br>
<br>
</div>Yes, I'm afraid you are confused. All existing GUID or CLSID definitions<br>
you can find are useless - there is only 1 that is relevant, and that will<br>
be defined in a typelib.<br>
<br>
I think the confusion is such that you need to find basic docs for the<br>
object, so we can get back to square 1.<br>
<font color="#888888"><br>
Mark<br>
<br>
</font></blockquote></div><br>
</div></div></blockquote></div><br>