\r
#include <windows.h>\r
#include <tchar.h>\r
+#include "stringtool.h"\r
#include "mayurc.h"\r
\r
/// main\r
int WINAPI _tWinMain(HINSTANCE i_hInstance, HINSTANCE /* i_hPrevInstance */,\r
- LPTSTR /* i_lpszCmdLine */, int /* i_nCmdShow */)\r
+ LPTSTR /* i_lpszCmdLine */, int /* i_nCmdShow */)\r
{\r
- typedef BOOL (WINAPI* ISWOW64PROCESS)(HANDLE hProcess, PBOOL Wow64Process);\r
- BOOL isWow64;\r
- ISWOW64PROCESS pIsWow64Process;\r
- STARTUPINFO si;\r
- PROCESS_INFORMATION pi;\r
- BOOL result;\r
- TCHAR *yamyPath = _T("yamy32");\r
-\r
- pIsWow64Process =\r
- (ISWOW64PROCESS)::GetProcAddress(::GetModuleHandle(_T("kernel32.dll")),\r
- "IsWow64Process");\r
- ZeroMemory(&pi,sizeof(pi));\r
- ZeroMemory(&si,sizeof(si));\r
- si.cb=sizeof(si);\r
-\r
- if (pIsWow64Process)\r
- {\r
- result = pIsWow64Process(::GetCurrentProcess(), &isWow64);\r
- if (result != FALSE && isWow64 == TRUE)\r
- {\r
- yamyPath = _T("yamy64");\r
- }\r
- }\r
-\r
- result = CreateProcess(yamyPath, yamyPath, NULL, NULL, FALSE,\r
- NORMAL_PRIORITY_CLASS, 0, NULL, &si, &pi);\r
-\r
- if (result == FALSE)\r
- {\r
- TCHAR buf[1024];\r
- TCHAR text[1024];\r
- TCHAR title[1024];\r
-\r
- LoadString(i_hInstance, IDS_cannotInvoke,\r
- text, sizeof(text)/sizeof(text[0]));\r
- LoadString(i_hInstance, IDS_mayu,\r
- title, sizeof(title)/sizeof(title[0]));\r
- _stprintf_s(buf, sizeof(buf)/sizeof(buf[0]),\r
- text, yamyPath, GetLastError());\r
- MessageBox((HWND)NULL, buf, title, MB_OK | MB_ICONSTOP);\r
- }\r
- else\r
- {\r
- CloseHandle(pi.hThread);\r
- CloseHandle(pi.hProcess);\r
- }\r
-\r
- return 0;\r
+ typedef BOOL (WINAPI* ISWOW64PROCESS)(HANDLE hProcess, PBOOL Wow64Process);\r
+ BOOL isWow64;\r
+ ISWOW64PROCESS pIsWow64Process;\r
+ STARTUPINFO si;\r
+ PROCESS_INFORMATION pi;\r
+ BOOL result;\r
+ tstring yamyPath;\r
+ _TCHAR exePath[GANA_MAX_PATH];\r
+ _TCHAR exeDrive[GANA_MAX_PATH];\r
+ _TCHAR exeDir[GANA_MAX_PATH];\r
+\r
+ GetModuleFileName(NULL, exePath, GANA_MAX_PATH);\r
+ _tsplitpath_s(exePath, exeDrive, GANA_MAX_PATH, exeDir, GANA_MAX_PATH, NULL, 0, NULL, 0);\r
+ yamyPath = exeDrive;\r
+ yamyPath += exeDir;\r
+\r
+ pIsWow64Process =\r
+ (ISWOW64PROCESS)::GetProcAddress(::GetModuleHandle(_T("kernel32.dll")),\r
+ "IsWow64Process");\r
+ ZeroMemory(&pi,sizeof(pi));\r
+ ZeroMemory(&si,sizeof(si));\r
+ si.cb=sizeof(si);\r
+\r
+ if (pIsWow64Process) {\r
+ result = pIsWow64Process(::GetCurrentProcess(), &isWow64);\r
+ if (result != FALSE && isWow64 == TRUE) {\r
+ yamyPath += _T("yamy64");\r
+ } else {\r
+ yamyPath += _T("yamy32");\r
+ }\r
+ } else {\r
+ yamyPath += _T("yamy32");\r
+ }\r
+\r
+ result = CreateProcess(yamyPath.c_str(), NULL, NULL, NULL, FALSE,\r
+ NORMAL_PRIORITY_CLASS, 0, NULL, &si, &pi);\r
+\r
+ if (result == FALSE) {\r
+ TCHAR buf[1024];\r
+ TCHAR text[1024];\r
+ TCHAR title[1024];\r
+\r
+ LoadString(i_hInstance, IDS_cannotInvoke,\r
+ text, sizeof(text)/sizeof(text[0]));\r
+ LoadString(i_hInstance, IDS_mayu,\r
+ title, sizeof(title)/sizeof(title[0]));\r
+ _stprintf_s(buf, sizeof(buf)/sizeof(buf[0]),\r
+ text, yamyPath, GetLastError());\r
+ MessageBox((HWND)NULL, buf, title, MB_OK | MB_ICONSTOP);\r
+ } else {\r
+ CloseHandle(pi.hThread);\r
+ CloseHandle(pi.hProcess);\r
+ }\r
+\r
+ return 0;\r
}\r