X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=PeerCast.root%2FPeerCast%2Fui%2Fwin32%2Fsimple%2FSimple.cpp;fp=PeerCast.root%2FPeerCast%2Fui%2Fwin32%2Fsimple%2FSimple.cpp;h=35d5c79b8d2bf9e0e95bb85888c649e1385902e0;hb=57517bd8ae64e1720b35e0a578f5c47b0afe7653;hp=6f8c8ac87b15f4969dd090f57abeda5913b784d8;hpb=db3dc67ba9862abf2887f2e3b567abe5a0c8213b;p=peercast-im%2FPeerCastIM.git diff --git a/PeerCast.root/PeerCast/ui/win32/simple/Simple.cpp b/PeerCast.root/PeerCast/ui/win32/simple/Simple.cpp index 6f8c8ac..35d5c79 100644 --- a/PeerCast.root/PeerCast/ui/win32/simple/Simple.cpp +++ b/PeerCast.root/PeerCast/ui/win32/simple/Simple.cpp @@ -186,6 +186,82 @@ void LOG2(const char *fmt,...) va_end(ap); } +// -------------------------------------------------- +void WINAPI ServiceMain(DWORD argc, LPSTR *argv) +{ + //hInst = hInstance; + + version_ex = 1; // PP”ÅŠg’£‹@”\‚𖳌ø‚Ɂ©‘å‰RBƒo[ƒWƒ‡ƒ“•\‹L‚ðEX‚É + + //iniFileName.set(".\\peercast.ini"); + + WIN32_FIND_DATA fd; //JP-EX + HANDLE hFind; //JP-EX + + OSVERSIONINFO osInfo; //JP-EX + osInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); //JP-EX + GetVersionEx(&osInfo); + if (osInfo.dwPlatformId == VER_PLATFORM_WIN32_NT) + winDistinctionNT = true; + else + winDistinctionNT = false; + + // off by default now + showGUI = false; + + // get current path + { + TCHAR buf[1024]; + DWORD ret; + + ret = GetModuleFileName(NULL, buf, sizeof(buf)/sizeof(TCHAR)); + if (ret) + { + exit(-1); + } + for (int i=_tcslen(buf); i>0; --i) + { + if (buf[i] == '\\') + { + buf[i+1] = '\0'; + break; + } + } + + exePath = buf; + } + + iniFileName.set(exePath.cstr()); + iniFileName.append("\\peercast.ini"); + + _chdir(exePath); + + peercastInst = new MyPeercastInst(); + peercastApp = new MyPeercastApp(); + + peercastInst->init(); + + LOG_DEBUG("Set OS Type: %s",winDistinctionNT?"WinNT":"Win9x"); + + if (peercastApp->clearTemp()) //JP-EX + { + DeleteFile("play.pls"); + hFind = FindFirstFile("*.asx",&fd); + if (hFind != INVALID_HANDLE_VALUE) + { + do + { + DeleteFile((char *)&fd.cFileName); + } + while (FindNextFile(hFind,&fd)); + + FindClose(hFind); + } + } + + peercastInst->saveSettings(); + peercastInst->quit(); +} // -------------------------------------------------- int WinMainDummy(HINSTANCE hInstance, @@ -411,8 +487,22 @@ int APIENTRY WinMain(HINSTANCE hInstance, _EXCEPTION_POINTERS *lpExcept; __try { - WinMainDummy(hInstance, hPrevInstance, lpCmdLine, nCmdShow); - +#if 0 + // switch to service + if (lstrlen(lpCmdLine) && strstr(lpCmdLine, "-D") != NULL) + { + SERVICE_TABLE_ENTRY svctbl[] = { + {"PeerCast", (LPSERVICE_MAIN_FUNCTION)ServiceMain}, + {NULL, NULL} + }; + + if (!StartServiceCtrlDispatcher(svctbl)) + { + //SvcReportEvent(TEXT("StartServiceCtrlDispatcher")); + } + } else +#endif + WinMainDummy(hInstance, hPrevInstance, lpCmdLine, nCmdShow); } __except(lpExcept = GetExceptionInformation(), EXCEPTION_EXECUTE_HANDLER) { DWORD nParams;