1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\r
9 int WINAPI _tWinMain(HINSTANCE i_hInstance, HINSTANCE /* i_hPrevInstance */,
\r
10 LPTSTR /* i_lpszCmdLine */, int /* i_nCmdShow */)
\r
12 typedef BOOL (WINAPI* ISWOW64PROCESS)(HANDLE hProcess, PBOOL Wow64Process);
\r
14 ISWOW64PROCESS pIsWow64Process;
\r
16 PROCESS_INFORMATION pi;
\r
18 TCHAR *yamyPath = _T("yamy32");
\r
21 (ISWOW64PROCESS)::GetProcAddress(::GetModuleHandle(_T("kernel32.dll")),
\r
23 ZeroMemory(&pi,sizeof(pi));
\r
24 ZeroMemory(&si,sizeof(si));
\r
27 if (pIsWow64Process) {
\r
28 result = pIsWow64Process(::GetCurrentProcess(), &isWow64);
\r
29 if (result != FALSE && isWow64 == TRUE) {
\r
30 yamyPath = _T("yamy64");
\r
34 result = CreateProcess(yamyPath, yamyPath, NULL, NULL, FALSE,
\r
35 NORMAL_PRIORITY_CLASS, 0, NULL, &si, &pi);
\r
37 if (result == FALSE) {
\r
42 LoadString(i_hInstance, IDS_cannotInvoke,
\r
43 text, sizeof(text)/sizeof(text[0]));
\r
44 LoadString(i_hInstance, IDS_mayu,
\r
45 title, sizeof(title)/sizeof(title[0]));
\r
46 _stprintf_s(buf, sizeof(buf)/sizeof(buf[0]),
\r
47 text, yamyPath, GetLastError());
\r
48 MessageBox((HWND)NULL, buf, title, MB_OK | MB_ICONSTOP);
\r
50 CloseHandle(pi.hThread);
\r
51 CloseHandle(pi.hProcess);
\r