/* Wannabe OSD This plugin tries to become miranda's standard OSD ;-) (C) 2005 Andrej Krutak Distributed under GNU's GPL 2 or later */ #include "wbOSD.h" #include "buildnumber.h" HINSTANCE hI; HWND hwnd=0; HANDLE hservosda; int hLangpack = 0; HANDLE hHookedNewEvent, hHookedInit, hProtoAck, hContactSettingChanged, hHookContactStatusChanged, hContactStatusChanged, hpluginShutDown; HINSTANCE hUser32; BOOL (WINAPI*pSetLayeredWindowAttributes)(HWND, COLORREF, BYTE, DWORD); void logmsg2(char *str); int MainInit(WPARAM,LPARAM); ///////////////////////////////////////////////////////////////////////////////////////// static PLUGININFOEX pluginInfo = { sizeof(PLUGININFOEX), "WannaBe OSD", __VERSION_DWORD, "Show new message/status change info using onscreen display", "Andrej Krutak", "andree182 {at} gmail (dot) com", "©2005 Andrej Krutak", "http://urtax.ms.mff.cuni.cz/~andree/", UNICODE_AWARE, { 0xfc718bc7, 0xabc8, 0x43cd, { 0xaa, 0xd9, 0x76, 0x16, 0x14, 0x61, 0x77, 0x38 } } // {FC718BC7-ABC8-43CD-AAD9-761614617738} }; extern "C" __declspec(dllexport) PLUGININFOEX *MirandaPluginInfoEx(DWORD) { return &pluginInfo; } ///////////////////////////////////////////////////////////////////////////////////////// extern "C" __declspec(dllexport) int Load() { mir_getLP(&pluginInfo); logmsg("Load"); pSetLayeredWindowAttributes=0; #ifndef FORCE_9XDRAWING hUser32=LoadLibrary(_T("user32.dll")); #else hUser32=0; #endif if (hUser32) { pSetLayeredWindowAttributes=(BOOL(WINAPI*)(HWND, COLORREF, BYTE, DWORD))GetProcAddress(hUser32, "SetLayeredWindowAttributes"); if (!pSetLayeredWindowAttributes) { FreeLibrary(hUser32); hUser32=0; } } hHookedInit = HookEvent(ME_SYSTEM_MODULESLOADED, MainInit); return 0; } ///////////////////////////////////////////////////////////////////////////////////////// extern "C" __declspec(dllexport) int Unload() { logmsg("Unload"); UnhookEvent(hpluginShutDown); UnhookEvent(hProtoAck); UnhookEvent(hContactSettingChanged); UnhookEvent(hContactStatusChanged); UnhookEvent(hHookedNewEvent); UnhookEvent(hHookedInit); if (hUser32) FreeLibrary(hUser32); pSetLayeredWindowAttributes=0; DestroyServiceFunction(hservosda); DestroyHookableEvent(hHookContactStatusChanged); return 0; } ///////////////////////////////////////////////////////////////////////////////////////// BOOL WINAPI DllMain(HINSTANCE hinst,DWORD fdwReason,LPVOID lpvReserved) { hI = hinst; return TRUE; }