[python-win32] about thre return value from pycom server
winterTTr
winterttr at gmail.com
Mon May 18 05:31:09 CEST 2009
I recently write a com server as shell extension .
And , i want to implement a interface call "IQueryInfo"
which you can find some information about it via MSDN .
As I can't find it the pythoncom , i implement it using the
TypeLibrary as following lines.
[shell_extension.idl]
----------------from-------------------------
[
object,
uuid(00021500-0000-0000-C000-000000000046),
helpstring("IQueryInfo Interface"),
pointer_default(unique)
]
interface IQueryInfo : IUnknown
{
HRESULT GetInfoFlags ([out] long * pdwFlags);
HRESULT GetInfoTip([in] long dwFlags , [out] wchar_t ** ppwszTip);
};
-----------------to-------------------------------
and implement the interface function as follow
# it is a member function of a class
def GetInfoFlags(self ):
return 0
when i run the code , the program ( which is explore.exe ) crashed ,
my god ! 0_0
i analyze the win32com code , and find that the program crashed when
running the code
in [universal.py] as follow :
WriteFromOutTuple(retVal, meth._gw_out_args, argPtr)
As i know , this function may write the return value to caller of the
com server .
As the interface defined , maybe i show return a pointer of long as
return value , not
long itself. So "return 0" may cause the access violation.
Question is :
how can i deal with this case ? I don't know how to return a long
pointer to the caller in py code.
or may be there is another way to solve this problem , any advise ? Thx.
More information about the python-win32
mailing list