Quantcast

comtypes.server.register is case sensitive to filenames, see registry PythonClass.

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

comtypes.server.register is case sensitive to filenames, see registry PythonClass.

jeffwelch
I was having intermittent problems creating a Python COM object that I am using as a test/learning exercise. What I finally noticed was that when I was command line registering the object I was not consistent in typing the name of the python file.


Executing the DOS command line:
    python TestMsgBox.py -regserver
Yields the following registry entry:
    HKEY_CLASSES_ROOT\CLSID\{a4c0208f-8888-11e1-ac67-b8ac6f92cf9d}\InprocServer32
        PythonClass = "TestMsgBox.TestMsgBox"


Executing the DOS command line:
    python TestMsgBox.py -regserver
Yields the following registry entry:
    HKEY_CLASSES_ROOT\CLSID\{a4c0208f-8888-11e1-ac67-b8ac6f92cf9d}\InprocServer32
        PythonClass = "testmsgbox.TestMsgBox"


I created the smallest sample I could to reproduce it.

    import comtypes

    class TestMsgBox( comtypes.IUnknown ):
        _case_insensitive_ = True
        _reg_threading_ = "Both"
        _reg_progid_ = "TestMsgBoxLib.TestMsgBox"
        _reg_desc_ = "MessageBox sample for testing"
        _reg_clsctx_ = comtypes.CLSCTX_INPROC_SERVER | comtypes.CLSCTX_LOCAL_SERVER
        _reg_clsid_ = "{a4c0208f-8888-11e1-ac67-b8ac6f92cf9d}"

    if __name__ == "__main__":
        from comtypes.server.register import UseCommandLine
        UseCommandLine(TestMsgBox)

I don't know if this was intended behavior but I had not seen it documented.
_______________________________________________
python-win32 mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/python-win32
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: comtypes.server.register is case sensitive to filenames, see registry PythonClass.

Mark Hammond-4
On 19/04/2012 11:32 PM, [hidden email] wrote:

> I was having intermittent problems creating a Python COM object that I am using as a test/learning exercise. What I finally noticed was that when I was command line registering the object I was not consistent in typing the name of the python file.
>
>
> Executing the DOS command line:
>      python TestMsgBox.py -regserver
> Yields the following registry entry:
>      HKEY_CLASSES_ROOT\CLSID\{a4c0208f-8888-11e1-ac67-b8ac6f92cf9d}\InprocServer32
>          PythonClass = "TestMsgBox.TestMsgBox"
>
>
> Executing the DOS command line:
>      python TestMsgBox.py -regserver

Is the above correct, or did you mean to say "python testmsgbox.py" there?

If you did then I can guess how comtypes would come to that conclusion -
python itself will think the filename is "testmsgbox.py".  pywin32 has
code specifically to work around this - in win32com\server\register.py
there is:

moduleName = os.path.splitext(win32api.FindFiles(sys.argv[0])[0][8])[0]

which will give back the actual filename rather than the one specified.
  I'd see if you can find a comtypes specific mailing-list and ask the
question...

...

>      class TestMsgBox( comtypes.IUnknown ):
>          _case_insensitive_ = True

Again, I know almost zero about comtypes, but I wouldn't expect the
above to have any bearing on the case of the module filename - I'd guess
that this controls whether the method/property names should be
considered case sensitive (ie, whether yourobject.Foo() and
yourobject.foo()) both call the same method.

HTH,

Mark

>          _reg_threading_ = "Both"
>          _reg_progid_ = "TestMsgBoxLib.TestMsgBox"
>          _reg_desc_ = "MessageBox sample for testing"
>          _reg_clsctx_ = comtypes.CLSCTX_INPROC_SERVER | comtypes.CLSCTX_LOCAL_SERVER
>          _reg_clsid_ = "{a4c0208f-8888-11e1-ac67-b8ac6f92cf9d}"
>
>      if __name__ == "__main__":
>          from comtypes.server.register import UseCommandLine
>          UseCommandLine(TestMsgBox)
>
> I don't know if this was intended behavior but I had not seen it documented.
> _______________________________________________
> python-win32 mailing list
> [hidden email]
> http://mail.python.org/mailman/listinfo/python-win32
>


_______________________________________________
python-win32 mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/python-win32
Loading...