|
|
//*************************************************************
// File name: INIT.C
//
// Description: Initialization code for Profile control panel
// applet
//
//
// Microsoft Confidential
// Copyright (c) Microsoft Corporation 1992-1994
// All rights reserved
//
//*************************************************************
#include <windows.h>
#include <cpl.h>
#include "profile.h"
//*************************************************************
//
// DllInitialize()
//
// Purpose: Main entry point
//
//
// Parameters: HINSTANCE hInstDLL - Instance handle of DLL
// DWORD dwReason - Reason DLL was called
// LPVOID lpvReserved - NULL
//
//
// Return: BOOL
//
//*************************************************************
BOOL DllInitialize(HINSTANCE hInstDLL, DWORD dwReason, LPVOID lpvReserved) { if (dwReason != DLL_PROCESS_ATTACH) { return TRUE; }
hInstance = hInstDLL;
DisableThreadLibraryCalls(hInstDLL);
return TRUE; }
//*************************************************************
//
// CPlApplet()
//
// Purpose: Control Panel entry point
//
//
// Parameters: HWND hwnd - Window handle
// WORD wMsg - Control Panel message
// LPARAM lParam1 - Long parameter
// LPARAM lParam2 - Long parameter
//
//
// Return: LONG
//
//*************************************************************
LONG CPlApplet( HWND hwnd, WORD wMsg, LPARAM lParam1, LPARAM lParam2) {
LPNEWCPLINFO lpNewCplInfo; LPCPLINFO lpCplInfo;
switch (wMsg) {
case CPL_INIT: if (CheckProfileType()) { uiShellHelp = RegisterWindowMessage (szShellHelp); return TRUE;
} else { return FALSE; } break;
case CPL_GETCOUNT: return (LONG)NUM_APPLETS;
case CPL_INQUIRE:
lpCplInfo = (LPCPLINFO)lParam2;
lpCplInfo->idIcon = ID_ICON; lpCplInfo->idName = IDS_NAME; lpCplInfo->idInfo = IDS_INFO; lpCplInfo->lData = 0L;
return (LONG)TRUE;
case CPL_NEWINQUIRE:
lpNewCplInfo = (LPNEWCPLINFO)lParam2;
lpNewCplInfo->hIcon = LoadIcon( hInstance, MAKEINTRESOURCE(ID_ICON));
if (!LoadString( hInstance, IDS_NAME, lpNewCplInfo->szName, sizeof(lpNewCplInfo->szName))) { lpNewCplInfo->szName[0] = TEXT('\0'); }
if(!LoadString( hInstance, IDS_INFO, lpNewCplInfo->szInfo, sizeof(lpNewCplInfo->szInfo))) { lpNewCplInfo->szInfo[0] = TEXT('\0'); }
lpNewCplInfo->dwSize = sizeof(NEWCPLINFO); lpNewCplInfo->dwHelpContext = HELP_CONTEXT; if(!LoadString( hInstance, IDS_INFO, lpNewCplInfo->szHelpFile, sizeof(lpNewCplInfo->szHelpFile))) { lpNewCplInfo->szHelpFile[0] = TEXT('\0'); }
return (LONG)TRUE;
case CPL_DBLCLK: RunApplet(hwnd); break; } return (LONG)0;
}
//*************************************************************
//
// CheckProfileType()
//
// Purpose: Checks to see if this user has a floating
// personal profile. This is done by looking
// in the registry for the "ProfileType" entry.
//
// 0 = local non-floating profile
// 1 = personal floating (.usr) profile
// 2 = manditory profile
//
// Parameters: void
//
//
// Return: BOOL - TRUE if this applet should load
// FALSE if not
//
//*************************************************************
BOOL CheckProfileType (void) { LONG lResult; HKEY hKey; DWORD dwType, dwMaxBufferSize; TCHAR szTempBuffer [MAX_TEMP_BUFFER];
//
// Open the registry key
//
lResult = RegOpenKeyEx (HKEY_CURRENT_USER, szProfileRegInfo, 0, KEY_ALL_ACCESS, &hKey);
if (lResult != ERROR_SUCCESS) { return FALSE; }
//
// Query for the profile path
//
dwMaxBufferSize = MAX_TEMP_BUFFER; szTempBuffer[0] = TEXT('\0'); lResult = RegQueryValueEx (hKey, szProfileType, NULL, &dwType, (LPBYTE) szTempBuffer, &dwMaxBufferSize);
//
// Close the registry key and return the appropriate response.
//
RegCloseKey (hKey);
if (lResult != ERROR_SUCCESS) { return FALSE; }
if (szTempBuffer[0] == PERSONAL_PROFILE_TYPE) { return TRUE;
} else { return FALSE; }
}
|