int load_tkinter_funcs(void) { /* * Load Tcl and Tk functions by searching all modules in current process. * Return 0 for success, non-zero for failure. */ HMODULE hMods[1024]; HANDLE hProcess; DWORD cbNeeded; unsigned int i; int found_tcl = 0; int found_tk = 0; /* First load tkinter module to make sure libraries are loaded */ PyObject *pModule = PyImport_ImportModule(TKINTER_PKG); if (pModule == NULL) { return 1; } Py_DECREF(pModule); /* Returns pseudo-handle that does not need to be closed */ hProcess = GetCurrentProcess(); /* Iterate through modules in this process looking for Tcl / Tk names */ if (EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbNeeded)) { for (i = 0; i < (cbNeeded / sizeof(HMODULE)); i++) { if (!found_tcl) { found_tcl = get_tcl(hMods[i]); if (found_tcl == -1) { return 1; } } if (!found_tk) { found_tk = get_tk(hMods[i]); if (found_tk == -1) { return 1; } } if (found_tcl && found_tk) { return 0; } } } if (found_tcl == 0) { PyErr_SetString(PyExc_RuntimeError, "Could not find Tcl routines"); } else { PyErr_SetString(PyExc_RuntimeError, "Could not find Tk routines"); } return 1; }
int load_tkinter_funcs(void) { // Load TCL and Tk functions by searching all modules in current process. // Return 0 for success, non-zero for failure. HMODULE hMods[1024]; HANDLE hProcess; DWORD cbNeeded; unsigned int i; int found_tcl = 0; int found_tk = 0; // Returns pseudo-handle that does not need to be closed hProcess = GetCurrentProcess(); // Iterate through modules in this process looking for TCL / Tk names if (EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbNeeded)) { for (i = 0; i < (cbNeeded / sizeof(HMODULE)); i++) { if (!found_tcl) { found_tcl = get_tcl(hMods[i]); if (found_tcl == -1) { return 1; } } if (!found_tk) { found_tk = get_tk(hMods[i]); if (found_tk == -1) { return 1; } } if (found_tcl && found_tk) { return 0; } } } if (found_tcl == 0) { PyErr_SetString(PyExc_RuntimeError, "Could not find TCL routines"); } else { PyErr_SetString(PyExc_RuntimeError, "Could not find Tk routines"); } return 1; }