Report WiseReminder feature requests, bug reports, updated translations in Other WiseCleaner Products Posted January 13, 2014 hi developers thanks for nice program please add native support song for Wise Reminder temporary i written hook dll add it in import table (lord pe) and strip reloc table // fhgfvgghfgh.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "MinHook.h" #if defined _M_X64 #pragma comment(lib, "libMinHook.x64.lib") #elif defined _M_IX86 #pragma comment(lib, "libMinHook.x86.lib") #endif void middle_volume() { MMRESULT result; HMIXER hMixer; result = mixerOpen(&hMixer, MIXER_OBJECTF_MIXER, 0, 0, 0); MIXERLINE ml = {0}; ml.cbStruct = sizeof(MIXERLINE); ml.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS; result = mixerGetLineInfo((HMIXEROBJ) hMixer, &ml, MIXER_GETLINEINFOF_COMPONENTTYPE); MIXERLINECONTROLS mlc = {0}; MIXERCONTROL mc = {0}; mlc.cbStruct = sizeof(MIXERLINECONTROLS); mlc.dwLineID = ml.dwLineID; mlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME; mlc.cControls = 1; mlc.pamxctrl = &mc; mlc.cbmxctrl = sizeof(MIXERCONTROL); result = mixerGetLineControls((HMIXEROBJ) hMixer, &mlc, MIXER_GETLINECONTROLSF_ONEBYTYPE); MIXERCONTROLDETAILS mcd = {0}; MIXERCONTROLDETAILS_UNSIGNED mcdu = {0}; mcdu.dwValue = 20767; // the volume is a number between 0 and 65535 mcd.cbStruct = sizeof(MIXERCONTROLDETAILS); mcd.hwndOwner = 0; mcd.dwControlID = mc.dwControlID; mcd.paDetails = &mcdu; mcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED); mcd.cChannels = 1; result = mixerSetControlDetails((HMIXEROBJ) hMixer, &mcd, MIXER_SETCONTROLDETAILSF_VALUE); mcd.dwControlID = 3; result = mixerSetControlDetails((HMIXEROBJ) hMixer, &mcd, MIXER_SETCONTROLDETAILSF_VALUE); mcd.dwControlID = 7; result = mixerSetControlDetails((HMIXEROBJ) hMixer, &mcd, MIXER_SETCONTROLDETAILSF_VALUE); mixerClose(hMixer); } void mute_off() { MMRESULT result; HMIXER hMixer; result = mixerOpen(&hMixer, MIXER_OBJECTF_MIXER, 0, 0, 0); MIXERLINE ml = {0}; ml.cbStruct = sizeof(MIXERLINE); ml.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS; result = mixerGetLineInfo((HMIXEROBJ) hMixer, &ml, MIXER_GETLINEINFOF_COMPONENTTYPE); MIXERLINECONTROLS mlc = {0}; MIXERCONTROL mc = {0}; mlc.cbStruct = sizeof(MIXERLINECONTROLS); mlc.dwLineID = ml.dwLineID; mlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME; mlc.cControls = 1; mlc.pamxctrl = &mc; mlc.cbmxctrl = sizeof(MIXERCONTROL); result = mixerGetLineControls((HMIXEROBJ) hMixer, &mlc, MIXER_GETLINECONTROLSF_ONEBYTYPE); mlc.dwControlType = MIXERCONTROL_CONTROLTYPE_MUTE; result = mixerGetLineControls((HMIXEROBJ) hMixer, &mlc, MIXER_GETLINECONTROLSF_ONEBYTYPE); MIXERCONTROLDETAILS mcd = {0}; MIXERCONTROLDETAILS_UNSIGNED mcdu = {0}; mcdu.dwValue = 32767; // the volume is a number between 0 and 65535 mcd.cbStruct = sizeof(MIXERCONTROLDETAILS); mcd.hwndOwner = 0; mcd.dwControlID = mc.dwControlID; mcd.paDetails = &mcdu; mcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED); mcd.cChannels = 1; MIXERCONTROLDETAILS_BOOLEAN mcb = {0}; mcb.fValue = false; mcd.paDetails = &mcb; mcd.cbDetails = sizeof(MIXERCONTROLDETAILS_BOOLEAN); result = mixerSetControlDetails((HMIXEROBJ) hMixer, &mcd, MIXER_SETCONTROLDETAILSF_VALUE); mixerClose(hMixer); } HSTREAM stream; void play_sound(PCH song) { BASS_ChannelStop(stream); BASS_StreamFree(stream); stream = BASS_StreamCreateFile(FALSE, song, 0, 0, BASS_SAMPLE_LOOP); BASS_ChannelSetAttribute((DWORD)stream, BASS_ATTRIB_VOL, (float)100 / 100.f); BASS_ChannelPlay(stream, FALSE); } typedef BOOL WINAPI DestroyWindow_t( __in HWND hWnd); DestroyWindow_t* pfnDestroyWindow; BOOL WINAPI DestroyWindow_Hook( __in HWND hWnd) { BASS_ChannelStop(stream); BASS_StreamFree(stream); stream = 0; return pfnDestroyWindow(hWnd); } typedef WINUSERAPI BOOL WINAPI MessageBeep_t( __in UINT uType); MessageBeep_t* pfnMessageBeep; bool inited; BOOL WINAPI MessageBeep_Hook( __in UINT uType) { void* p =_ReturnAddress(); if (p >= PVOID(0x400000) && p < PVOID(0x400000 + 0x1ce000)) { if (!inited) { BASS_Init(1, 44100, 0, 0, NULL); inited = true; } middle_volume(); mute_off(); play_sound("c:/wapres.wav"); return TRUE; } return pfnMessageBeep(uType); } void splice() { MH_Initialize(); HMODULE mod = LoadLibrary(TEXT("user32")); void* ptr = GetProcAddress(mod, "MessageBeep"); MH_CreateHook(ptr, MessageBeep_Hook, reinterpret_cast<void**>(&pfnMessageBeep)); MH_EnableHook(ptr); ptr = GetProcAddress(mod, "DestroyWindow"); MH_CreateHook(ptr, DestroyWindow_Hook, reinterpret_cast<void**>(&pfnDestroyWindow)); MH_EnableHook(ptr); } BOOL CALLBACK DllMain(HINSTANCE, DWORD reason, LPVOID) { if (DLL_PROCESS_ATTACH == reason) { splice(); } return TRUE; } extern "C" __declspec(dllexport) void lock() { }
WiseReminder feature requests, bug reports, updated translations
in Other WiseCleaner Products
Posted
hi developers
thanks for nice program
please add native support song for Wise Reminder
temporary i written hook dll add it in import table (lord pe) and strip reloc table