55 lines
1.4 KiB
C
55 lines
1.4 KiB
C
#include "stdafx.h"
|
|
#include "systray.h"
|
|
#include <cscuiext.h>
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// 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;
|
|
}
|