mirror of
https://github.com/Open-Shell/Open-Shell-Menu.git
synced 2026-06-14 11:26:38 +10:00
714c98130a
Put common build settings into separate props file. This way it will be much easier to do changes that should affect all projects in the future.
125 lines
3.1 KiB
C++
125 lines
3.1 KiB
C++
// dllmain.cpp : Implementation of DllMain.
|
|
|
|
#include "stdafx.h"
|
|
#include "resource.h"
|
|
#include "StartMenuHelper_h.h"
|
|
#include "dllmain.h"
|
|
#include "Settings.h"
|
|
#include "Translations.h"
|
|
#include "StringUtils.h"
|
|
#include "ResourceHelper.h"
|
|
#include "..\StartMenuDLL\LogManager.h"
|
|
|
|
CStartMenuHelperModule _AtlModule;
|
|
|
|
void UpgradeSettings( bool bShared )
|
|
{
|
|
}
|
|
|
|
void UpdateSettings( void )
|
|
{
|
|
CRegKey regKey;
|
|
wchar_t language[100]=L"";
|
|
if (regKey.Open(HKEY_LOCAL_MACHINE,L"Software\\OpenShell\\OpenShell",KEY_READ|KEY_WOW64_64KEY)==ERROR_SUCCESS)
|
|
{
|
|
ULONG size=_countof(language);
|
|
if (regKey.QueryStringValue(L"DefaultLanguage",language,&size)!=ERROR_SUCCESS)
|
|
language[0]=0;
|
|
}
|
|
UpdateSetting(L"Language",language,false);
|
|
}
|
|
|
|
void ClosingSettings( HWND hWnd, int flags, int command )
|
|
{
|
|
}
|
|
|
|
void SettingChangedCallback( const CSetting *pSetting )
|
|
{
|
|
}
|
|
|
|
const wchar_t *GetDocRelativePath( void )
|
|
{
|
|
return L"";
|
|
}
|
|
|
|
CSetting g_Settings[]={
|
|
{L"MenuStyleGroup",CSetting::TYPE_GROUP},
|
|
{L"MenuStyle",CSetting::TYPE_INT,0,0,2},
|
|
{L"Classic1",CSetting::TYPE_RADIO},
|
|
{L"Classic2",CSetting::TYPE_RADIO},
|
|
{L"Win7",CSetting::TYPE_RADIO},
|
|
|
|
{L"GeneralBehavior",CSetting::TYPE_GROUP},
|
|
{L"AutoStart",CSetting::TYPE_BOOL,0,0,1},
|
|
{L"PinnedPrograms",CSetting::TYPE_INT,0,0,1},
|
|
{L"FastItems",CSetting::TYPE_RADIO},
|
|
{L"PinnedItems",CSetting::TYPE_RADIO},
|
|
{L"DisablePinExt",CSetting::TYPE_BOOL,0,0,0},
|
|
{L"FolderStartMenu",CSetting::TYPE_STRING,0,0,L""},
|
|
{L"FolderCommonStartMenu",CSetting::TYPE_STRING,0,0,L""},
|
|
{L"PinnedItemsPath",CSetting::TYPE_DIRECTORY,0,0,L"%APPDATA%\\OpenShell\\Pinned"},
|
|
|
|
{L"Language",CSetting::TYPE_GROUP},
|
|
{L"Language",CSetting::TYPE_STRING,0,0,L"",CSetting::FLAG_COLD|CSetting::FLAG_SHARED},
|
|
|
|
{NULL}
|
|
};
|
|
|
|
static HANDLE g_DllInitThread;
|
|
|
|
static DWORD CALLBACK DllInitThread( void* )
|
|
{
|
|
CoInitialize(NULL);
|
|
InitSettings(g_Settings,COMPONENT_MENU,NULL);
|
|
|
|
wchar_t path[_MAX_PATH];
|
|
path[0]=0;
|
|
#ifdef BUILD_SETUP
|
|
{
|
|
CRegKey regKey;
|
|
if (regKey.Open(HKEY_LOCAL_MACHINE,L"Software\\OpenShell\\OpenShell",KEY_READ|KEY_WOW64_64KEY)==ERROR_SUCCESS)
|
|
{
|
|
ULONG size=_countof(path);
|
|
if (regKey.QueryStringValue(L"Path",path,&size)!=ERROR_SUCCESS)
|
|
path[0]=0;
|
|
}
|
|
}
|
|
#endif
|
|
if (!path[0])
|
|
{
|
|
GetModuleFileName(g_Instance,path,_countof(path));
|
|
PathRemoveFileSpec(path);
|
|
}
|
|
|
|
wchar_t fname[_MAX_PATH];
|
|
Sprintf(fname,_countof(fname),L"%s" INI_PATH L"StartMenuHelperL10N.ini",path);
|
|
CString language=GetSettingString(L"Language");
|
|
ParseTranslations(fname,language);
|
|
|
|
CoUninitialize();
|
|
return 0;
|
|
}
|
|
|
|
void WaitDllInitThread( void )
|
|
{
|
|
ATLASSERT(g_DllInitThread);
|
|
WaitForSingleObject(g_DllInitThread,INFINITE);
|
|
LogToFile(STARTUP_LOG,L"StartMenuHelper: WaitDllInitThread");
|
|
}
|
|
|
|
// DLL Entry Point
|
|
extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
|
|
{
|
|
if (dwReason==DLL_PROCESS_ATTACH)
|
|
{
|
|
LogToFile(STARTUP_LOG,L"StartMenuHelper: DLL_PROCESS_ATTACH");
|
|
g_Instance=hInstance;
|
|
g_DllInitThread=CreateThread(NULL,0,DllInitThread,NULL,0,NULL);
|
|
}
|
|
if (dwReason==DLL_PROCESS_DETACH)
|
|
{
|
|
LogToFile(STARTUP_LOG,L"StartMenuHelper: DLL_PROCESS_DETACH");
|
|
}
|
|
return _AtlModule.DllMain(dwReason, lpReserved);
|
|
}
|