Dublanc, David wrote: > >I use this script (that I found in the newsgroup) and the result is >not correct. Is it possible to use Windows DLL libraries library in >Python ? Because there is a >GetDiskFreeSpaceEx that seems to return the good results (thanks to >Chris Gonnerman who gives me the name of this function). There's the 'calldll' module, which I got from: ftp://squirl.nightmare.com/pub/python/python-ext/calldll-python-2.0.zip The documentation is rather terse, so it took a bit of experimenting to get it to work properly. The tricky bits are getting data to and from the dll-function, and a mistake there could really lead to spectacular crashes: I merely got away with some access violations, and crashing Python itself a couple of times. Much of the trouble came from the fact that I couldn't get the membuf-object to work. However, using a Python character array solved it. It helps if you read the chapter in the Python manuals about C-extensions, because it uses Python's own parameter passing system. Anyway, as an example, here's some of the code I came up with to interface with a .dll. It's not supposed to be an example of good style, but it works. The dll-function expects the address of a buffer filled with data, modifies it in-place, and returns an integer (0 == success). The "w" and the "i" 'in call_foreign_function' reflect this. HTH, Robert Amesz - - - import array, string, sys import calldll # Compress Xface data def MakeXface(xface): # Fill buffer, make it 2K & pad with \0's buf = array.array('c', xface + '\0' * (2000 - len(xface))) # DLL-interface calldll.load_library('X-Face.dll') handle = calldll.get_module_handle('X-Face.dll') address = calldll.get_proc_address(handle, '_compface') # Compress X-Face if calldll.call_foreign_function(address, "w", "i", (buf,)): return None return buf
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4