#include "stdafx.h" #include "systray.h" #include /////////////////////////////////////////////////////////////////////////////// // CSC_CheckEnable typedef BOOL (WINAPI* PFNCSCMSGPROCESS)(LPMSG); static HWND g_hWndCSC = NULL; static HMODULE g_hCSCUIDll = NULL; static PFNCSCMSGPROCESS g_pfnMsgProcess = NULL; BOOL CSC_CheckEnable(HWND hWnd, BOOL bSvcEnabled) { if ((g_hWndCSC && IsWindow(g_hWndCSC) && !bSvcEnabled) || (((!g_hWndCSC) || !IsWindow(g_hWndCSC)) && bSvcEnabled)) { if (!g_hCSCUIDll) g_hCSCUIDll = LoadLibrary(TEXT("cscui.dll")); if (g_hCSCUIDll) { PFNCSCUIINITIALIZE pfn = (PFNCSCUIINITIALIZE)GetProcAddress(g_hCSCUIDll, "CSCUIInitialize"); g_pfnMsgProcess = (PFNCSCMSGPROCESS)GetProcAddress(g_hCSCUIDll, "CSCUIMsgProcess"); if (pfn) { DWORD dwFlags = CI_INITIALIZE | CI_CREATEWINDOW; if (!bSvcEnabled) dwFlags = CI_TERMINATE | CI_DESTROYWINDOW; g_hWndCSC = (*pfn)(NULL, dwFlags); } } if (g_hCSCUIDll && !bSvcEnabled) { FreeLibrary(g_hCSCUIDll); g_hCSCUIDll = NULL; g_pfnMsgProcess = NULL; } } return(TRUE); } BOOL CSC_MsgProcess(LPMSG pMsg) { if (g_pfnMsgProcess) return (*g_pfnMsgProcess)(pMsg); return FALSE; }