From 1493aec2a15e51639f1e0095a4ace2200d2fca2e Mon Sep 17 00:00:00 2001 From: Birunthan Mohanathas Date: Thu, 29 Sep 2011 06:04:20 +0000 Subject: [PATCH] Partly reverted r975 (restored Rainmeter.dll). --- {Library => Application}/Application.cpp | 93 ++++--- Application/Application.rc | 115 ++++++++ Application/Application.vcxproj | 331 +++++++++++++++++++++++ Application/Application.vcxproj.filters | 37 +++ Application/Rainmeter.ico | Bin 0 -> 85182 bytes Application/resource.h | 21 ++ Library/Library.rc | 4 +- Library/Library.vcxproj | 38 +-- Library/Library.vcxproj.filters | 3 - Library/Rainmeter.cpp | 57 +++- Library/Rainmeter.h | 14 +- Library/Res/window.ico | Bin 85182 -> 5430 bytes Library/TrayWindow.cpp | 2 +- Rainmeter.sln | 31 ++- 14 files changed, 640 insertions(+), 106 deletions(-) rename {Library => Application}/Application.cpp (79%) create mode 100644 Application/Application.rc create mode 100644 Application/Application.vcxproj create mode 100644 Application/Application.vcxproj.filters create mode 100644 Application/Rainmeter.ico create mode 100644 Application/resource.h diff --git a/Library/Application.cpp b/Application/Application.cpp similarity index 79% rename from Library/Application.cpp rename to Application/Application.cpp index afc50d09..54c6c812 100644 --- a/Library/Application.cpp +++ b/Application/Application.cpp @@ -17,10 +17,12 @@ */ #define _CRTDBG_MAP_ALLOC -#include "StdAfx.h" +#include +#include +#include +#include #include "resource.h" -#include "Rainmeter.h" -#include "TrayWindow.h" +#include "../Library/Rainmeter.h" #if defined _M_IX86 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") @@ -32,14 +34,23 @@ #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") #endif -extern CRainmeter* Rainmeter; - -void Bang(const WCHAR* command); +/* +** Protos +*/ BOOL InitApplication(HINSTANCE hInstance, const WCHAR* WinClass); HWND InitInstance(HINSTANCE hInstance, const WCHAR* WinClass, const WCHAR* WinName); -LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); +LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); +void Bang(const WCHAR* command); +HMODULE RmLoadSystemLibrary(LPCWSTR lpLibFileName); BOOL IsRunning(HANDLE* hMutex); +/* +** Stuff from the DLL +*/ +EXPORT_PLUGIN int Initialize(HWND hWnd, HINSTANCE hInstance, LPCWSTR lpCmdLine); +EXPORT_PLUGIN void Quit(); +EXPORT_PLUGIN void ExecuteBang(LPCTSTR szBang); + const WCHAR* WinClass = L"DummyRainWClass"; const WCHAR* WinName = L"Rainmeter control window"; @@ -87,7 +98,7 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmd if (!InitApplication(hInstance, WinClass)) return RetError; } - hWnd = InitInstance(hInstance, WinClass, WinName); + hWnd=InitInstance(hInstance, WinClass, WinName); if (!hWnd) return RetError; // Remove quotes from the commandline @@ -101,40 +112,28 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmd } } - int result = 1; - try - { - Rainmeter = new CRainmeter; - if (Rainmeter) - { - result = Rainmeter->Initialize(hWnd, hInstance, lpCmdLine); - } - } - catch (CError& error) - { - MessageBox(hWnd, error.GetString().c_str(), APPNAME, MB_OK | MB_TOPMOST | MB_ICONEXCLAMATION); - } - - if (result == 1) + // Check that the DLL is available and initialize it + HMODULE module = GetModuleHandle(L"Rainmeter.dll"); + if (module == NULL || Initialize(hWnd, module, lpCmdLine) == 1) { + MessageBox(NULL, L"Unable to load Rainmeter.dll", L"Rainmeter", MB_OK | MB_TOPMOST | MB_ICONERROR); DestroyWindow(hWnd); + return RetError; } - else + + // Run the standard window message loop + while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0) { - // Run the standard window message loop - while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0) + if (bRet == -1) // error { - if (bRet == -1) // error - { - CRainmeter::Quit(); - break; - } - else - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } + Quit(); + break; + } + else + { + TranslateMessage(&msg); + DispatchMessage(&msg); } } @@ -153,11 +152,11 @@ BOOL InitApplication(HINSTANCE hInstance, const WCHAR* WinClass) WNDCLASS wc; wc.style = 0; - wc.lpfnWndProc = (WNDPROC)WndProc; + wc.lpfnWndProc = (WNDPROC) MainWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; - wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOW)); + wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_RAINMETER)); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName = NULL; @@ -322,34 +321,34 @@ BOOL IsRunning(HANDLE* hMutex) } /* -** WndProc +** MainWndProc ** ** The main window procedure ** */ -LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { - switch (uMsg) - { + switch(message) { + case WM_DESTROY: { - CRainmeter::Quit(); + Quit(); PostQuitMessage(0); } break; case WM_COPYDATA: { - COPYDATASTRUCT* cds = (COPYDATASTRUCT*)lParam; - if (Rainmeter && cds && (cds->dwData == 1) && (cds->cbData > 0) && cds->lpData) + COPYDATASTRUCT* pCopyDataStruct = (COPYDATASTRUCT*) lParam; + if (pCopyDataStruct && (pCopyDataStruct->dwData == 1) && (pCopyDataStruct->cbData > 0)) { - ExecuteBang((LPCWSTR)cds->lpData); + ExecuteBang((const WCHAR*)pCopyDataStruct->lpData); } } break; default: - return DefWindowProc(hWnd, uMsg, wParam, lParam); + return DefWindowProc(hWnd, message, wParam, lParam); } return 0; diff --git a/Application/Application.rc b/Application/Application.rc new file mode 100644 index 00000000..7c992dcd --- /dev/null +++ b/Application/Application.rc @@ -0,0 +1,115 @@ +// Microsoft Developer Studio generated resource script. +// Caution! Do not modify this file without changing \install\UpdateApplicationRC.au3 +// +#include "resource.h" +#include "../Version.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "windows.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Finnish resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION FILEVER + PRODUCTVERSION PRODUCTVER + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "FileDescription", "Rainmeter" + VALUE "FileVersion", STRFILEVER + VALUE "InternalName", "Rainmeter" + VALUE "LegalCopyright", "Copyright (C) 2011 - All authors" + VALUE "OriginalFilename", "Rainmeter.exe" + VALUE "ProductName", "Rainmeter" +#ifdef _WIN64 + VALUE "ProductVersion", STRPRODUCTVER " (64-bit)" +#else + VALUE "ProductVersion", STRPRODUCTVER " (32-bit)" +#endif //_WIN64 + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_RAINMETER ICON DISCARDABLE "Rainmeter.ico" + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // Finnish resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Application/Application.vcxproj b/Application/Application.vcxproj new file mode 100644 index 00000000..f5300d9f --- /dev/null +++ b/Application/Application.vcxproj @@ -0,0 +1,331 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {D2A0903C-E760-4134-AE61-3D55BF8F760C} + + + + + Application + false + Unicode + true + + + Application + false + Unicode + + + Application + false + Unicode + $(COMPILER64) + true + + + Application + false + Unicode + $(COMPILER64) + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)TestBench\x32\$(Configuration)\ + .\x32\$(Configuration)\ + false + $(SolutionDir)TestBench\x64\$(Configuration)\ + .\x64\$(Configuration)\ + false + $(SolutionDir)TestBench\x32\$(Configuration)\ + .\x32\$(Configuration)\ + false + $(SolutionDir)TestBench\x64\$(Configuration)\ + .\x64\$(Configuration)\ + false + Rainmeter + Rainmeter + Rainmeter + Rainmeter + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\x32/Debug/Application.tlb + + + + + Disabled + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + + .\x32/Debug/Application.pch + .\x32/Debug/ + .\x32/Debug/ + .\x32/Debug/ + Level3 + true + EditAndContinue + 4018;4090;4114;4267;4351;4786;4800;4996 + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + ../TestBench/x32/Debug/Rainmeter.exe + true + true + .\x32/Debug/Rainmeter.pdb + Windows + wWinMainCRTStartup + MachineX86 + + + if exist ..\testbench\x32\release\skins goto skip +mkdir ..\testbench\x32\release\skins +if not exist ..\testbench\x32\release\themes (mkdir ..\testbench\x32\release\themes) +echo "Copying skins..." +xcopy /Q /S /Y ..\Install\Skins ..\testbench\x32\release\skins +xcopy /Q /S /Y ..\Install\Themes ..\testbench\x32\release\themes +xcopy /Q /S /Y ..\Install\Default.ini ..\testbench\x32\release\ +:skip + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\x64/Debug/Application.tlb + + + + + Disabled + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + + .\x64/Debug/Application.pch + .\x64/Debug/ + .\x64/Debug/ + .\x64/Debug/ + Level3 + true + ProgramDatabase + 4018;4090;4114;4267;4351;4786;4800;4996 + + + _DEBUG;_WIN64;%(PreprocessorDefinitions) + 0x0409 + + + ../TestBench/x64/Debug/Rainmeter.exe + true + true + .\x32/Debug/Rainmeter.pdb + Windows + wWinMainCRTStartup + MachineX64 + + + if exist ..\testbench\x32\release\skins goto skip +mkdir ..\testbench\x32\release\skins +if not exist ..\testbench\x32\release\themes (mkdir ..\testbench\x32\release\themes) +echo "Copying skins..." +xcopy /Q /S /Y ..\Install\Skins ..\testbench\x32\release\skins +xcopy /Q /S /Y ..\Install\Themes ..\testbench\x32\release\themes +xcopy /Q /S /Y ..\Install\Default.ini ..\testbench\x32\release\ +:skip + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\x32/Release/Application.tlb + + + + + MaxSpeed + OnlyExplicitInline + WIN32;NDEBUG;_WINDOWS;_SECURE_SCL=0;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + .\x32/Release/Application.pch + .\x32/Release/ + .\x32/Release/ + .\x32/Release/ + Level3 + true + ProgramDatabase + 4018;4090;4114;4267;4351;4786;4800;4996 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Rainmeter.lib;%(AdditionalDependencies) + ../TestBench/x32/Release/Rainmeter.exe + true + ..\Library\x32\Release;%(AdditionalLibraryDirectories) + true + .\x32/Release/Rainmeter.pdb + Windows + wWinMainCRTStartup + MachineX86 + .rdata=.text + true + true + + + if exist ..\testbench\x32\release\skins goto skip +mkdir ..\testbench\x32\release\skins +if not exist ..\testbench\x32\release\themes (mkdir ..\testbench\x32\release\themes) +echo "Copying skins..." +xcopy /Q /S /Y ..\Install\Skins ..\testbench\x32\release\skins +xcopy /Q /S /Y ..\Install\Themes ..\testbench\x32\release\themes +xcopy /Q /S /Y ..\Install\Default.ini ..\testbench\x32\release\ +:skip + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\x64/Release/Application.tlb + + + + + /GL /GA %(AdditionalOptions) + MaxSpeed + OnlyExplicitInline + WIN32;NDEBUG;_WINDOWS;_SECURE_SCL=0;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + .\x64/Release/Application.pch + .\x64/Release/ + .\x64/Release/ + .\x64/Release/ + Level3 + true + ProgramDatabase + 4018;4090;4114;4267;4351;4786;4800;4996 + + + NDEBUG;_WIN64;%(PreprocessorDefinitions) + 0x0409 + + + /LTCG %(AdditionalOptions) + Rainmeter.lib;%(AdditionalDependencies) + ../TestBench/x64/Release/Rainmeter.exe + true + ..\Library\x64\Release;%(AdditionalLibraryDirectories) + .\x64/Release/Rainmeter.pdb + Windows + wWinMainCRTStartup + MachineX64 + .rdata=.text + true + true + + + if exist ..\testbench\x32\release\skins goto skip +mkdir ..\testbench\x32\release\skins +if not exist ..\testbench\x32\release\themes (mkdir ..\testbench\x32\release\themes) +echo "Copying skins..." +xcopy /Q /S /Y ..\Install\Skins ..\testbench\x32\release\skins +xcopy /Q /S /Y ..\Install\Themes ..\testbench\x32\release\themes +xcopy /Q /S /Y ..\Install\Default.ini ..\testbench\x32\release\ +:skip + + + + + Disabled + EnableFastChecks + Disabled + EnableFastChecks + MaxSpeed + MaxSpeed + + + + + _DEBUG;%(PreprocessorDefinitions) + _DEBUG;%(PreprocessorDefinitions) + NDEBUG;%(PreprocessorDefinitions) + NDEBUG;%(PreprocessorDefinitions) + + + + + + + + + + + {be9d2400-7f1c-49d6-8498-5ce495491ad6} + false + + + + + + \ No newline at end of file diff --git a/Application/Application.vcxproj.filters b/Application/Application.vcxproj.filters new file mode 100644 index 00000000..079efa20 --- /dev/null +++ b/Application/Application.vcxproj.filters @@ -0,0 +1,37 @@ + + + + + {22670730-eb79-4df9-bed9-27fff1350132} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {774a1827-ac91-40b9-ad18-8a3d68983c64} + h;hpp;hxx;hm;inl + + + {a4963a10-e359-400f-86fa-bdce98dd5dc2} + ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe + + + + + Source Files + + + + + Header Files + + + + + Resource Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/Application/Rainmeter.ico b/Application/Rainmeter.ico new file mode 100644 index 0000000000000000000000000000000000000000..cb2e5558cdb998a7b4a4c61223f11420d97eb2e5 GIT binary patch literal 85182 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 xY@AUg*f`Zd1$qS=r~Mjid=T*K!C>PXTY`=M2K {BE9D2400-7F1C-49D6-8498-5CE495491AD6} - Application - Application + DynamicLibrary false Unicode true - Application + DynamicLibrary false Unicode - Application + DynamicLibrary false Unicode $(COMPILER64) true - Application + DynamicLibrary false Unicode $(COMPILER64) @@ -96,7 +95,7 @@ Disabled lua/include;lua/lua;lua/tolua++;lua/glue;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;HAVE_CONFIG_H;SUPPORT_UTF8;LIBRARY_EXPORTS;%(PreprocessorDefinitions) + WIN32;_DEBUG;_WINDOWS;_USRDLL;HAVE_CONFIG_H;SUPPORT_UTF8;LIBRARY_EXPORTS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -117,14 +116,12 @@ comctl32.lib;Wininet.lib;UxTheme.lib;Winmm.lib;gdiplus.lib;Iphlpapi.lib;shlwapi.lib;%(AdditionalDependencies) - ../TestBench/x32/Debug/Rainmeter.exe + ../TestBench/x32/Debug/Rainmeter.dll true %(AdditionalLibraryDirectories) true .\x32/Debug/Rainmeter.pdb .\x32/Debug/Rainmeter.lib - Windows - wWinMainCRTStartup MachineX86 @@ -141,7 +138,7 @@ Disabled lua/include;lua/lua;lua/tolua++;lua/glue;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;HAVE_CONFIG_H;SUPPORT_UTF8;LIBRARY_EXPORTS;%(PreprocessorDefinitions) + WIN32;_DEBUG;_WINDOWS;_USRDLL;HAVE_CONFIG_H;SUPPORT_UTF8;LIBRARY_EXPORTS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -162,14 +159,12 @@ comctl32.lib;Wininet.lib;UxTheme.lib;Winmm.lib;gdiplus.lib;Iphlpapi.lib;shlwapi.lib;%(AdditionalDependencies) - ../TestBench/x64/Debug/Rainmeter.exe + ../TestBench/x64/Debug/Rainmeter.dll true %(AdditionalLibraryDirectories) true .\x64/Debug/Rainmeter.pdb .\x64/Debug/Rainmeter.lib - Windows - wWinMainCRTStartup MachineX64 @@ -187,7 +182,7 @@ MaxSpeed OnlyExplicitInline lua/include;lua/lua;lua/tolua++;lua/glue;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;LIBRARY_EXPORTS;HAVE_CONFIG_H;SUPPORT_UTF8;%(PreprocessorDefinitions) + WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBRARY_EXPORTS;HAVE_CONFIG_H;SUPPORT_UTF8;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -203,7 +198,7 @@ true ProgramDatabase 4018;4090;4114;4267;4334;4351;4786;4800;4996 - /GL /GA %(AdditionalOptions) + /GL %(AdditionalOptions) NDEBUG;%(PreprocessorDefinitions) @@ -211,14 +206,12 @@ comctl32.lib;Wininet.lib;UxTheme.lib;Winmm.lib;gdiplus.lib;Iphlpapi.lib;shlwapi.lib;%(AdditionalDependencies) - ../TestBench/x32/Release/Rainmeter.exe + ../TestBench/x32/Release/Rainmeter.dll true lua/lib;%(AdditionalLibraryDirectories) true .\x32/Release/Rainmeter.pdb .\x32/Release/Rainmeter.lib - Windows - wWinMainCRTStartup MachineX86 .rdata=.text true @@ -236,11 +229,11 @@ - /GL /GA %(AdditionalOptions) + /GL %(AdditionalOptions) MaxSpeed Default lua/include;lua/lua;lua/tolua++;lua/glue;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;LIBRARY_EXPORTS;HAVE_CONFIG_H;SUPPORT_UTF8;%(PreprocessorDefinitions) + WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBRARY_EXPORTS;HAVE_CONFIG_H;SUPPORT_UTF8;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -261,13 +254,11 @@ /LTCG %(AdditionalOptions) comctl32.lib;Wininet.lib;UxTheme.lib;Winmm.lib;gdiplus.lib;Iphlpapi.lib;shlwapi.lib;%(AdditionalDependencies) - ../TestBench/x64/Release/Rainmeter.exe + ../TestBench/x64/Release/Rainmeter.dll true %(AdditionalLibraryDirectories) .\x64/Release/Rainmeter.pdb .\x64/Release/Rainmeter.lib - Windows - wWinMainCRTStartup MachineX64 .rdata=.text true @@ -275,7 +266,6 @@ - Disabled EnableFastChecks diff --git a/Library/Library.vcxproj.filters b/Library/Library.vcxproj.filters index b27d2846..17159efc 100644 --- a/Library/Library.vcxproj.filters +++ b/Library/Library.vcxproj.filters @@ -357,9 +357,6 @@ Source Files - - Source Files - diff --git a/Library/Rainmeter.cpp b/Library/Rainmeter.cpp index d4fe1f12..ce50c1b8 100644 --- a/Library/Rainmeter.cpp +++ b/Library/Rainmeter.cpp @@ -134,6 +134,48 @@ std::vector CRainmeter::ParseString(LPCTSTR str) return result; } +/* +** Initialize +** +** Initializes Rainmeter +** +*/ +int Initialize(HWND hWnd, HINSTANCE hInstance, LPCWSTR lpCmdLine) +{ + int result = 1; + + try + { + Rainmeter = new CRainmeter; + + if (Rainmeter) + { + result = Rainmeter->Initialize(hWnd, hInstance, lpCmdLine); + } + } + catch (CError& error) + { + MessageBox(hWnd, error.GetString().c_str(), APPNAME, MB_OK | MB_TOPMOST | MB_ICONEXCLAMATION); + } + + return result; +} + +/* +** Quit +** +** Quits Rainmeter. +** +*/ +void Quit() +{ + if (Rainmeter) + { + delete Rainmeter; + Rainmeter = NULL; + } +} + /* ** ExecuteBang ** @@ -1161,21 +1203,6 @@ int CRainmeter::Initialize(HWND hParent, HINSTANCE hInstance, LPCWSTR szPath) return result; // Alles OK } -/* -** Quit -** -** Quits Rainmeter. -** -*/ -void CRainmeter::Quit() -{ - if (Rainmeter) - { - delete Rainmeter; - Rainmeter = NULL; - } -} - /* ** CreateDefaultConfigFile ** diff --git a/Library/Rainmeter.h b/Library/Rainmeter.h index 71140d89..67d42c34 100644 --- a/Library/Rainmeter.h +++ b/Library/Rainmeter.h @@ -94,7 +94,6 @@ public: ~CRainmeter(); int Initialize(HWND hParent, HINSTANCE hInstance, LPCWSTR szPath); - static void Quit(); CConfigParser* GetCurrentParser() { return m_CurrentParser; } void SetCurrentParser(CConfigParser* parser) { m_CurrentParser = parser; } @@ -274,6 +273,17 @@ private: GlobalConfig m_GlobalConfig; }; -void ExecuteBang(LPCTSTR szBang); +#ifdef LIBRARY_EXPORTS +#define EXPORT_PLUGIN __declspec(dllexport) +#else +#define EXPORT_PLUGIN __declspec(dllimport) +#endif + +extern "C" +{ + EXPORT_PLUGIN int Initialize(HWND hWnd, HINSTANCE hInstance, LPCWSTR lpCmdLine); + EXPORT_PLUGIN void Quit(); + EXPORT_PLUGIN void ExecuteBang(LPCTSTR szBang); +} #endif diff --git a/Library/Res/window.ico b/Library/Res/window.ico index cb2e5558cdb998a7b4a4c61223f11420d97eb2e5..97bd22c698ddba04f1d0834648044326192ee3c1 100644 GIT binary patch delta 56 zcmdltlXaVx8Uq6(0~3RS0*F>%SRuf`02E>n0Ma0S1`7kjIUswxnjYgCf$dQqj43Pt D=DP^G literal 85182 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 xY@AUg*f`Zd1$qS=r~Mjid=T*K!C>PXTY`=M2K