mani sabri wrote: > I want to run a Python shell from a DllMain() function. >
It isn't safe to do this much processing in a DllMain. There is a thing called the "loader lock" that is held while DllMain is called, and it can prevent you from loading other DLLs. You might try spinning off a thread to do your real work. > This is what I came up with so far: > > BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID > lpReserved) > { > //---- > switch(ul_reason_for_call) > { > case DLL_PROCESS_ATTACH: > { > if (!Py_IsInitialized()) > { > BOOL res = AllocConsole(); > > //I was going to use the handles but I heard its not the way to do > that > //HANDLE OutHand = GetStdHandle(STD_OUTPUT_HANDLE); > //HANDLE InHand = GetStdHandle(STD_INPUT_HANDLE); > //HANDLE ErrHand = GetStdHandle(STD_ERROR_HANDLE); > > //Redirecting console > freopen("CONOUT$","w",stdout); > freopen("CONIN$","w",stdin); > freopen("CONERR$","w",stderr); > Do you really think "w" is correct for all three of those? > //the printf prints on the new console after redirection > printf("test"); > > //opening stdout and stdin files to pass to python for redirection > FILE* afile = fopen("CONOUT$", "w+"); > FILE* bfile = fopen("CONIN$", "w+"); > Again, do you really think you want "w+ for both of these? How much writing will you do to stdin? > Py_Initialize(); > if (!Py_IsInitialized()) return(FALSE); > > //the bellow lines , instead of redirecting python crashes the dll > PySys_SetObject("stdout", PyFile_FromFile(afile, "test","wb", > fclose)); > PySys_SetObject("stdin", PyFile_FromFile(bfile, "CONIN$","wb", > fclose)); > Again, you're probably going to want to read from stdin, not write to it. And you don't really need to do the fopen yourself: PyFileObject* xout = PyFile_FromString( "CONOUT$", "wb" ); PyFileObject* xin = PyFile_FromString( "CONIN$", "rb" ); PySys_SetObject( "stdout", xout ); PySys_SetObject( "__stdout__", xout ); PySys_SetObject( "stdin", xin ); PySys_SetObject( "__stdin__", xin ); -- Tim Roberts, [EMAIL PROTECTED] Providenza & Boekelheide, Inc. _______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32