Error including win32net in a Python COM server

Emanuel Borges Eaborges at hotmail.com
Tue Jul 30 17:12:23 EDT 2002


I've created Python COM servers in the past with a fair amount of
success but I can't seem to figure out what I am doing wrong in this
instance.

The only difference that I have found is that in this particular COM
server, I am importing win32net.  And after doing some debugging I
have found that the COM server works fine if I remove this import. 
This, however I can't do because I need NetUseGetInfo, NetUseAdd,
NetUseDel & NetUseEnum for my Server to function correctly.  I've
attached the meat of my code below.  If anyone can offer any insight,
I would be extremely grateful.  The error that I'm getting is that the
Specified procedure could not be found.  When I use Python debugging I
get the error number 2147221231.  I've looked in previous posts but
haven't had much luck...

##The splitstring is just here so that I could test the COM server 
##without the win32net import.  Without the import, it works fine.
##The code itself also works fine before making it a COM server.

import os
from win32net import NetUseGetInfo, NetUseAdd, NetUseDel, NetUseEnum

class ShareControll:
    _public_methods_=['QueryDrive','MapDrive','DeleteDrive','SplitString']
    _reg_progid_ = "PythonDemos.MW_COM"
    _reg_clsid_ = "{1CBECF27-89E4-4E5A-928B-92E11B11B0A9}"
    def MapDrive(self, letter, share):
        try:
            share = u'%s'%share
            letter = u'%s'%letter
            NetUseAdd(None,1,{'remote': share, 'local': letter})
            status = "sucess"
        except:
            status = "fail"
        return status

    def DeleteDrive(self, letter):
        try:
            NetUseDel(None,letter)
            status = "sucess"
        except:
            status = "fail"
        return status

    def QueryDrive(self, letter):
        try:
            query = NetUseGetInfo(None,letter)
        except:
            query = "Drive not in use"
        return query

    def SplitString(self, val, item=None):
        import string
        if item != None: item = str(item)
        return string.split(str(val), item)

if __name__ == "__main__":
    print "Registering COM server..."
    import win32com.server.register
    win32com.server.register.UseCommandLine(ShareControll)



More information about the Python-list mailing list