BOOL LoggerWin::platformInit() { WNDCLASS wc; wc.style = 0; wc.lpfnWndProc = DefDlgProc; wc.cbClsExtra = 0; wc.cbWndExtra = DLGWINDOWEXTRA; wc.hInstance = hInst; wc.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON_APP)); wc.hCursor = LoadCursor(0, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); wc.lpszMenuName = NULL; wc.lpszClassName = szClassName; if(!RegisterClass(&wc)) return FALSE; // restore prefs ProfileWin profile; profile.getBool(NPSPY_REG_KEY_ONTOP, &bOnTop); profile.getBool(NPSPY_REG_KEY_LOGTOWINDOW, &bToWindow); profile.getBool(NPSPY_REG_KEY_LOGTOCONSOLE, &bToConsole); profile.getBool(NPSPY_REG_KEY_LOGTOFILE, &bToFile); profile.getBool(NPSPY_REG_KEY_SPALID, &bSPALID); profile.getString(NPSPY_REG_KEY_LOGFILENAME, szFile, strlen(szFile)); for(int i = 1; i < TOTAL_NUMBER_OF_API_CALLS; i++) { BOOL selected = TRUE; if(profile.getBool(ActionName[i], &selected)) bMutedCalls[i] = !selected; } if(!profile.getSizeAndPosition(&width, &height, &x, &y)) { width = 0; height = 0; x = 0; y = 0; } hWnd = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_DIALOG_MAIN), GetDesktopWindow(), (DLGPROC)MainDlgProc, (LPARAM)this); if(hWnd == NULL) { UnregisterClass(szClassName, hInst); return FALSE; } if(bOnTop) SetWindowPos(hWnd, bOnTop ? HWND_TOPMOST : HWND_NOTOPMOST, 0,0,0,0, SWP_NOMOVE | SWP_NOSIZE); return TRUE; }
// This is exported function which allows to access Settings GUI from other applications void WINAPI SPY_Setup() { LoggerWin logger; ProfileWin profile; profile.getBool(NPSPY_REG_KEY_ONTOP, &logger.bOnTop); profile.getBool(NPSPY_REG_KEY_LOGTOWINDOW, &logger.bToWindow); profile.getBool(NPSPY_REG_KEY_LOGTOCONSOLE, &logger.bToConsole); profile.getBool(NPSPY_REG_KEY_LOGTOFILE, &logger.bToFile); profile.getBool(NPSPY_REG_KEY_SPALID, &logger.bSPALID); profile.getString(NPSPY_REG_KEY_LOGFILENAME, logger.szFile, strlen(logger.szFile)); for(int i = 1; i < TOTAL_NUMBER_OF_API_CALLS; i++) { BOOL selected = TRUE; if(profile.getBool(ActionName[i], &selected)) logger.bMutedCalls[i] = !selected; } onOptions(NULL, &logger); }