[python-win32] Access to .NET components from Python (Was: Win32 COM starter book)

Mark Hammond mhammond@skippinet.com.au
Fri, 20 Dec 2002 22:19:05 +1100


This is a multi-part message in MIME format.

------=_NextPart_000_000D_01C2A875.CF884710
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

> Compile with csc /target:library MyAssembly.cs, register with
> regasm MyAssembly.dll /tlb:MyAssembly.tlb, and try to test it. Nope,
> OLE error 0x80131522. Google tells me that this means I need my
> assembly in the same directory as the executable! (That's Python, not
> the script - so definitely not where I'd like to put my random DLLs).

Yeah, this is .NET for you.  If you want it publically available, you must
create a strongly named assembly and stick it in the GAC.  There are 2
choices - very public or very private.  However, the "very public" isn't as
bad as it sounds - you are guaranteed to get the *except* object you
compiled against, regardless of naming clashes, etc.

> OK, copy the thing there for now.
> 
> >>> from win32com.client import Dispatch
> >>> net = Dispatch("CTest")
> >>> net.Test()
> Hola Mundo!
> What is your name:
> kjhas
> Buenos Dias, kjhas!
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> TypeError: 'NoneType' object is not callable
> 
> Pretty good - it works. But what is the TypeError at the bottom? My C#
> code has finished OK. Is it something "on the way back" from .NET to
> Python?

Yep - we are seeing a VB friendly implementation - thus "net.Test" is
actually making the call (even though it looks like a property reference!)
This function returns None, and we are trying to call it.

Use EnsureDispatch() or makepy manually to get it working.

Mark.

------=_NextPart_000_000D_01C2A875.CF884710
Content-Type: application/ms-tnef;
	name="winmail.dat"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="winmail.dat"

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
DIAIIAYAAAAAAMAAAAAAAABGAAAAABCFAAAAAAAAAwANgAggBgAAAAAAwAAAAAAAAEYAAAAAUoUA
AH1uAQAeAA6ACCAGAAAAAADAAAAAAAAARgAAAABUhQAAAQAAAAQAAAA5LjAACwASgAggBgAAAAAA
wAAAAAAAAEYAAAAADoUAAAAAAAADABOACCAGAAAAAADAAAAAAAAARgAAAAARhQAAAAAAAAMAFIAI
IAYAAAAAAMAAAAAAAABGAAAAABiFAAAAAAAACwAVgAggBgAAAAAAwAAAAAAAAEYAAAAABoUAAAAA
AAADABaACCAGAAAAAADAAAAAAAAARgAAAAABhQAAAAAAAAIB+A8BAAAAEAAAAHHEQImDsLJPiGPu
Zqj3mv8CAfoPAQAAABAAAABxxECJg7CyT4hj7mao95r/AgH7DwEAAACSAAAAAAAAADihuxAF5RAa
obsIACsqVsIAAG1zcHN0LmRsbAAAAAAATklUQfm/uAEAqgA32W4AAABFOlxEb2N1bWVudHMgYW5k
IFNldHRpbmdzXHNraXBcTG9jYWwgU2V0dGluZ3NcQXBwbGljYXRpb24gRGF0YVxNaWNyb3NvZnRc
T3V0bG9va1xvdXRsb29rLnBzdAAAAAMA/g8FAAAAAwANNP03AAACAX8AAQAAADEAAAAwMDAwMDAw
MDcxQzQ0MDg5ODNCMEIyNEY4ODYzRUU2NkE4Rjc5QUZGMjQ4Njg1MDAAAAAAAwAGEF6OG6IDAAcQ
TAQAAAMAEBABAAAAAwAREAEAAAAeAAgQAQAAAGUAAABDT01QSUxFV0lUSENTQy9UQVJHRVQ6TElC
UkFSWU1ZQVNTRU1CTFlDUyxSRUdJU1RFUldJVEhSRUdBU01NWUFTU0VNQkxZRExML1RMQjpNWUFT
U0VNQkxZVExCLEFORFRSWVRPAAAAAPuF

------=_NextPart_000_000D_01C2A875.CF884710--