[python-win32] Using licensed ActiveX control with win32ui.CreateControl()

Wolfgang Schneider wschneider at ra.rockwell.com
Wed Apr 13 12:06:21 CEST 2005


Hi 

I have a problem with passing a runtime license key for an ActiveX control 
to the method CreateControl() of the class pywin.mfc.activex.Control (and 
the CreateControl() method of win32ui) 

Can anybody give me a hint in which form the license key string must be 
passed to this method? 

I got the license key for the ActiveX control using the "License Key 
Requester" from Microsoft 
(http://support.microsoft.com/d­efault.aspx?scid=kb;en-us;1517­71) and I 
used the string given as comment above the WCHAR array (since I don't know 
how to convert the WCHAR array for Python). 

I pass this string to the CreateControl() method of 
pywin.mfc.activex.Control in the following way:

    # instead of 'X' I use the correct license key string, of course
    licKeyString = "XXXXXXXXX" 
    # self.ocx is an instance of pywin.mfc.activex.Control 
    # (actually a subclass of "Control" and the Python wrapper 
    # generated for the ActiveX control I want to use)
    self.ocx.CreateControl(
      windowTitle = "Component One Chart 8.0 ActiveX Control", 
      style       = win32con.WS_VISIBLE | win32con.WS_CHILD, 
      rect        = (0, 0, DEFAULT_WIDTH, DEFAULT_HEIGHT), 
      parent      = self, 
      id          = 1, 
      lic_string  = licKeyString) 

But when creating the control with this string, the control is created in 
"evaluation mode" and not, as expected, as a licensed control. 

I looked up the code for the CreateControl() method and found out, that it 
passes the license key string directly to the CreateControl() of the 
PyCWnd class (the Python wrapper for the CWnd class of MFC implemented at 
win32ui). Than I looked at the Python extension, where the 
PyCWnd::CreateControl() is implemented, and found, that the macro T2OLE is 
used to convert the given Python string for the license key to an OLE 
string, before passing it to the original MFC method. 

ok = pWnd->CreateControl(clsid, szWndName, style, rect, pWndParent, id, 
NULL, bStorage, T2OLE(szLicKey)); 

I'm not sure, but when I understand this right, the MFC method 
CreateControl() wants a BSTR here and I read somewhere that T2OLE does not 
return a BSTR. Can this be the problem here? Should there be used T2BSTR 
instead? Is this a bug in win32ui?

Has anybody ever used the license key string parameter of the 
CreateControl() method in Python and can tell my how to pass the license 
key string correctly? 

Thanks in advance. 

Wolfgang Schneider
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/python-win32/attachments/20050413/7de93d88/attachment.htm


More information about the Python-win32 mailing list