Re: Help accessing COM .dll from Python
Hi, Am 01.12.2012 10:51, schrieb Steve Simmons: First time post - be gentle with me :-) I am trying to write a Python script to access a scanning device. I have an SDK for the scanner but the documentation is a bit limited and the supplier doesn't support Python (but Python is the best option for me in the current circumstances). From a quick view it seems the documentation is excellent. There are tons of examples (even Java so you could use jython), API documents and the SDK. The "VC SDK.pdf" from the API documents zip explains what functions are there and how to call them. I have no idea why you used PEExplorer, are you using a device not covered by Slib.dll? Anyway, I suggest you forget about COM and try to load Slib.dll via ctypes http://docs.python.org/2/library/ctypes.html and call some functions documented in "VC SDK.pdf" and see what happens. The defines for return codes used in the documentation are here http://www.id-reader.com/Support/Sample_Codes/Visual_C_Plus_Plus/header_lib.rar in SlibErrDef.h and probably others... cheers Paul The SDK revolves around a .dll file that is described as a 'COM Object' but the text also implies that it can be accessed directly - "If you don’t use the COM interface in your application and use the SDK files directly like in VC++ then you don’t need to install these files on the destination computer". If I look inside the .dll (thanks PEExplorer!), I see DllCanUnload, DllGetClassObject, DllRegisterServer and DllUnregisterServer in the 'Export' view. If I look at the 'Import' view, I can see the names of a bunch of .dll files and the names of the functions/methods I want to call. So I concluded that DllGetClassObject would be my friend. However, I've read various tutorials on using .dll and COM (ctypes, comtypes, and the Python documentation) and I've ended up more confused than when I started. I expected to be using COM but all the examples seem to revolve around automating excel or outlook. I'd be really grateful for some hints on what direction Ishould be headed and a pointer to a relevant tutorial. Simmo -- http://mail.python.org/mailman/listinfo/python-list
Re: Help accessing COM .dll from Python
On Sat, Dec 01, 2012 at 12:47:57PM +, Steve Simmons wrote: > Gunther - Sorry about that, hoping this response comes through as > plain text. > > Chris - Thanks for the translation and the response. Unfortunately, > I don't speak 'C', and I think the learning curve for Python + COM > should be slightly less steep. i've had some some expirience using COM from python with pywin32, which works reasonably well if your interfaces is documented. as for examples beeing excel centric: it does not really matter, you just have to look the real interface you want to use in the documentation of your libary. there are however some pitfalls, espesially with arguments passed by reference: there not the parameter will be modified but you will have a tuple as a return value. albert signature.asc Description: Digital signature -- http://mail.python.org/mailman/listinfo/python-list
Re: Help accessing COM .dll from Python
Gunther - Sorry about that, hoping this response comes through as plain text. Chris - Thanks for the translation and the response. Unfortunately, I don't speak 'C', and I think the learning curve for Python + COM should be slightly less steep. The scanner is supplied by Card Scanning Solutions (CSSN in USA) and their docs are accessible from http://www.cardscanning.com/developers.php. -- http://mail.python.org/mailman/listinfo/python-list
Re: Help accessing COM .dll from Python
Quoting his entire text for the benefit of Mr Dietrich, who is apparently having trouble reading it. (He's right though, plain text is a lot easier to work with.) On Sat, Dec 1, 2012 at 8:51 PM, Steve Simmons wrote: > First time post - be gentle with me :-) > > I am trying to write a Python script to access a scanning device. I have an > SDK for the scanner but the documentation is a bit limited and the supplier > doesn't support Python (but Python is the best option for me in the current > circumstances). > > The SDK revolves around a .dll file that is described as a 'COM Object' but > the text also implies that it can be accessed directly - "If you don’t use > the COM interface in your application and use the SDK files directly like in > VC++ then you don’t need to install these files on the destination > computer". If I look inside the .dll (thanks PE Explorer!), I see > DllCanUnload, DllGetClassObject, DllRegisterServer and DllUnregisterServer > in the 'Export' view. If I look at the 'Import' view, I can see the names > of a bunch of .dll files and the names of the functions/methods I want to > call. So I concluded that DllGetClassObject would be my friend. > > However, I've read various tutorials on using .dll and COM (ctypes, > comtypes, and the Python documentation) and I've ended up more confused than > when I started. I expected to be using COM but all the examples seem to > revolve around automating excel or outlook. > > I'd be really grateful for some hints on what direction I should be headed > and a pointer to a relevant tutorial. > > Simmo Yeah, ctypes isn't all that easy to work with I'm afraid. Ultimately, your problem is with your scanner's SDK; if it's poorly documented, it's not going to be any easier working from Python than it would be from C. I would advise following their non-COM instructions as closely as you can, and seeing where that leads you. If their docs are online, post us a link; it's possible someone here may be familiar with it, or at very least be able to help you with the translation to Python. Good luck! ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Help accessing COM .dll from Python
Steve Simmons wrote: > > > > > > >First time post - >be gentle with me :-) > >I am trying to write a Python script to > access a scanning device. I > have an SDK for the size="-1">scanner but the documentation is a size="-1">bit limited and the supplier doesn't support > Python (but Python is > the best option for me in the >current >circumstances). > > > > The SDK revolves around a .dll file that size="-1">is described as a 'COM Object' >but the text also implies that it can be ac size="-1">cessed directly - "If you don’t use the COM > interface in your application and use the SDK files > directly like in VC++ then you don’t need to install > these files on the destination computer". If I look > inside the .dll (thanks PE size="-1"> Explorer!), I see DllCanUnload, > DllGetClassObject, DllRegisterServer and > DllUnregisterServer in the 'Export' view. If I > look at the 'Import' view, I can >see the names of a bunch of size="-1">.dll files and the >names of the functions/methods >I want to call. So I concluded that >> size="-1">size="-1">size="-1"> size="-1"> size="-1">size="-1">size="-1">size="-1">DllGetClassObject > would be my > >friend.t> > > > However, I've read > various tutorials on using .dll and COM (ctypes, > comtypes, and the Python documentation) and I've > ended up more confused than when >I started. I expected to be > using COM but all the examples seem to revolve > around automating excel or out size="-1">look. > >I'd be really grateful for > some hints on what direction Isize="-1"> should be headed > and a pointer to a relevant >tutorial. > > > Simmo > > > A newsreader is not an HTML reader (aka web browser). Please post your question in plain text. Best regards, Günther -- http://mail.python.org/mailman/listinfo/python-list
Help accessing COM .dll from Python
First time post - be gentle with me :-) I am trying to write a Python script to access a scanning device. I have an SDK for the scanner but the documentation is a bit limited and the supplier doesn't support Python (but Python is the best option for me in the current circumstances). The SDK revolves around a .dll file that is described as a 'COM Object' but the text also implies that it can be accessed directly - "If you don’t use the COM interface in your application and use the SDK files directly like in VC++ then you don’t need to install these files on the destination computer". If I look inside the .dll (thanks PE Explorer!), I see DllCanUnload, DllGetClassObject, DllRegisterServer and DllUnregisterServer in the 'Export' view. If I look at the 'Import' view, I can see the names of a bunch of .dll files and the names of the functions/methods I want to call. So I concluded that DllGetClassObject would be my friend. However, I've read various tutorials on using .dll and COM (ctypes, comtypes, and the Python documentation) and I've ended up more confused than when I started. I expected to be using COM but all the examples seem to revolve around automating excel or outlook. I'd be really grateful for some hints on what direction I should be headed and a pointer to a relevant tutorial. Simmo -- http://mail.python.org/mailman/listinfo/python-list