Am 18.11.2011 08:51, schrieb Pekka Kytölä:
Is it possible to pass my own dll's (already loaded) handle as an argument to load/attach to the very same instance of dll? Thing is that I've done plugin (dll) to a host app and the SDK's function pointers are assigned once the dll is loaded in the host process.
DLL handles are valid anywhere in a process, but...
I'd like to fire up python code with ShellExecuteEx from my plugin dll and expose (wrap) these SDK funcs to that script. If I just load the dll in python it will be different instance and the SDK function pointers are all NULL. I tried passing the dll handle as lpParameter but in vain.
...ShellExecuteEx will create a new process, where the DLL handle is not valid. A new process has a separate memory space, so the function pointers are different etc. This is so by design, it shouldn't matter to one process when a DLL it uses is loaded into another process, too.
Is this ShellExecute + dll handle passing even possible or do I need to take a totally different route? What route that would be? Doesn't have to be portable, just so it works in Windows environment.
If all you want is to run Python code inside your application, you can link in a Python interpreter and run it from there. This is called embedding Python (docs.python.org/extending/embedding.html), as opposed to writing Python modules, don't confuse those two Python C APIs.
Another way to get both into the same process is to convert your host application into a Python module, which you then import into Python. This would use the other Python C API (docs.python.org/extending/extending.html).
It depends a bit on what you want to achieve, so you might want to elaborate on that. This is often better than asking for a way to achieve a solution that is impossible.
Good luck! Uli -- http://mail.python.org/mailman/listinfo/python-list