// Inside Functions\r
//******************************************************************************\r
\r
+#define GetAPIAddress(name, unicode) GetProcAddress(g_LibInfo.hLib, (g_LibInfo.szPrefix + wxT(name) + ((unicode && g_LibInfo.fUnicode) ? wxT("W") : wxEmptyString)).char_str())\r
+#define GetAPIAddressAlt(name, unicode) GetProcAddress(g_LibInfoAlt.hLib, (g_LibInfoAlt.szPrefix + wxT(name) + ((unicode && g_LibInfoAlt.fUnicode) ? wxT("W") : wxEmptyString)).char_str())\r
+\r
int CalErrorCodeConvert(int nCalErrorCode)\r
{\r
switch (nCalErrorCode)\r
}\r
}\r
\r
-#define GetAPIAddress(name, unicode) GetProcAddress(g_LibInfo.hLib, (g_LibInfo.szPrefix + wxT(name) + ((unicode && g_LibInfo.fUnicode) ? wxT("W") : wxEmptyString)).char_str())\r
-#define GetAPIAddressAlt(name, unicode) GetProcAddress(g_LibInfoAlt.hLib, (g_LibInfoAlt.szPrefix + wxT(name) + ((unicode && g_LibInfoAlt.fUnicode) ? wxT("W") : wxEmptyString)).char_str())\r
+int CalSetCallbackProc(bool fAlt)\r
+{\r
+ // \90æ\82É\83R\81[\83\8b\83o\83b\83N\8aÖ\90\94\82Ì\90Ý\92è\82ð\89ð\8f\9c\82µ\82Ä\82¨\82\81B\r
+ FARPROC fpProc;\r
+ if (fAlt)\r
+ {\r
+ fpProc = ::GetAPIAddressAlt("KillOwnerWindowEx64", false);\r
+ g_LibInfoAlt.fCallback32bit = fpProc == NULL;\r
+ if (g_LibInfoAlt.fCallback32bit)\r
+ {\r
+ fpProc = ::GetAPIAddressAlt("KillOwnerWindowEx", false);\r
+ }\r
+ }\r
+ else\r
+ {\r
+ fpProc = ::GetAPIAddress("KillOwnerWindowEx64", false);\r
+ g_LibInfo.fCallback32bit = fpProc == NULL;\r
+ if (g_LibInfo.fCallback32bit)\r
+ {\r
+ fpProc = ::GetAPIAddress("KillOwnerWindowEx", false);\r
+ }\r
+ }\r
+ if (fpProc == NULL)\r
+ {\r
+ return TPI_ERROR_U_USE_LIBRARY;\r
+ }\r
+ // \83G\83\89\81[\82Å\82à\96³\8e\8b\82·\82é\81B\r
+ ((BOOL (__stdcall *)(HWND)) fpProc)(NULL);\r
+\r
+ // \91±\82¢\82Ä\83R\81[\83\8b\83o\83b\83N\8aÖ\90\94\82Ì\90Ý\92è\81B\r
+ if (fAlt)\r
+ {\r
+ fpProc = ::GetAPIAddressAlt("SetOwnerWindowEx64", false);\r
+ g_LibInfoAlt.fCallback32bit = fpProc == NULL;\r
+ if (g_LibInfoAlt.fCallback32bit)\r
+ {\r
+ fpProc = ::GetAPIAddressAlt("SetOwnerWindowEx", true);\r
+ }\r
+ }\r
+ else\r
+ {\r
+ fpProc = ::GetAPIAddress("SetOwnerWindowEx64", false);\r
+ g_LibInfo.fCallback32bit = fpProc == NULL;\r
+ if (g_LibInfo.fCallback32bit)\r
+ {\r
+ fpProc = ::GetAPIAddress("SetOwnerWindowEx", true);\r
+ }\r
+ }\r
+\r
+ return (fpProc == NULL || ! ((fAlt ? g_LibInfoAlt.fCallback32bit : g_LibInfo.fCallback32bit)\r
+ ? ((BOOL (__stdcall *)(HWND, ARCHIVERPROC * )) fpProc)(NULL, (ARCHIVERPROC *) CallbackProc)\r
+ : ((BOOL (__stdcall *)(HWND, ARCHIVERPROC *, DWORD)) fpProc)(NULL, (ARCHIVERPROC *) CallbackProc, (fAlt ? g_LibInfoAlt.fUnicode : g_LibInfo.fUnicode) ? sizeof(EXTRACTINGINFOEX64W) : sizeof(EXTRACTINGINFOEX64))))\r
+ ? TPI_ERROR_U_USE_LIBRARY : TPI_ERROR_SUCCESS;\r
+}\r
\r
//******************************************************************************\r
// Functions\r
return TPI_ERROR_D_PARAMETER;\r
}\r
g_prProc = * _prArcProc;\r
- g_LibInfo.fCallback32bit = FALSE;\r
- g_LibInfoAlt.fCallback32bit = FALSE;\r
-\r
- // API\82Ì\83A\83h\83\8c\83X\82ð\8eæ\93¾\81B\r
- FARPROC fpProc = ::GetAPIAddress("SetOwnerWindowEx64", true);\r
-\r
- BOOL fResult = FALSE;\r
- if (fpProc == NULL)\r
- {\r
- // SetOwnerWindowEx64\82ª\8eÀ\91\95\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\81ASetOwnerWindowEx\82ð\97\98\97p\81B\r
- fpProc = ::GetAPIAddress("SetOwnerWindowEx", true);\r
- if (fpProc == NULL)\r
- {\r
- return TPI_ERROR_U_USE_LIBRARY;\r
- }\r
- g_LibInfo.fCallback32bit = TRUE;\r
- fResult = ((BOOL (__stdcall *)(HWND, ARCHIVERPROC *)) fpProc)(NULL, (ARCHIVERPROC *) CallbackProc);\r
- }\r
- else\r
- {\r
- fResult = ((BOOL (__stdcall *)(HWND, ARCHIVERPROC *, DWORD)) fpProc)(NULL, (ARCHIVERPROC *) CallbackProc, g_LibInfo.fUnicode ? sizeof(EXTRACTINGINFOEX64W) : sizeof(EXTRACTINGINFOEX64));\r
- }\r
-\r
- // \91ã\91Ö\83\89\83C\83u\83\89\83\8a\82ÌAPI\82Ì\83A\83h\83\8c\83X\82ð\8eæ\93¾\81B\91¶\8dÝ\82µ\82È\82\82Ä\82à\83G\83\89\81[\82É\82Í\82µ\82È\82¢\81B\r
- fpProc = ::GetAPIAddressAlt("SetOwnerWindowEx64", true);\r
-\r
- if (fpProc == NULL)\r
- {\r
- // SetOwnerWindowEx64\82ª\8eÀ\91\95\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\81ASetOwnerWindowEx\82ð\97\98\97p\81B\r
- fpProc = ::GetAPIAddressAlt("SetOwnerWindowEx", true);\r
- if (fpProc == NULL)\r
- {\r
- return fResult;\r
- }\r
- g_LibInfoAlt.fCallback32bit = TRUE;\r
- ((BOOL (__stdcall *)(HWND, ARCHIVERPROC *)) fpProc)(NULL, (ARCHIVERPROC *) CallbackProc);\r
- }\r
- else\r
- {\r
- ((BOOL (__stdcall *)(HWND, ARCHIVERPROC *, DWORD)) fpProc)(NULL, (ARCHIVERPROC *) CallbackProc, g_LibInfoAlt.fUnicode ? sizeof(EXTRACTINGINFOEX64W) : sizeof(EXTRACTINGINFOEX64));\r
- }\r
\r
- return fResult ? TPI_ERROR_SUCCESS : TPI_ERROR_UNDEFINED;\r
+ // \83R\81[\83\8b\83o\83b\83N\8aÖ\90\94\82ð\90Ý\92è\81B\r
+ CalSetCallbackProc(true);\r
+ return CalSetCallbackProc(false);\r
}\r
\r
#ifdef __cplusplus\r