static void CALLBACK ToggleCalendar_done(HWND hwnd, UINT uMsg, ULONG_PTR dwData, LRESULT lResult){ (void)uMsg; (void)lResult; hwnd = api.GetCalendar(); if(!hwnd && api.OS >= TOS_WIN10){ // Win10 (new slow calendar) dwData = 50; do{ // min 6-12 iterations on my VM (also seen 50+ under load) Sleep(50); hwnd = api.GetCalendar(); }while(!hwnd && --dwData); } // 11px padding is Win8 default, 0px is Win10 if(hwnd) api.PositionWindow(hwnd, (api.OS<TOS_WIN10 && api.OS>=TOS_WIN7 ? 11 : 0)); }
//================================================================= //--------------------------+++--> toggle calendar (close or open): void ToggleCalendar(int type) //---------------------------+++--> { HWND calendar = api.GetCalendar(); int is_custom = api.GetInt("Calendar", "bCustom", 0); if(calendar){ if(is_custom) SetForegroundWindow(calendar); return; } if(api.OS >= TOS_VISTA && (!is_custom && type!=1)){ // Windows 10 workaround as SendMessage doesn't work any longer (no error given) SendMessageCallback(g_hwndClock, WM_USER+102, 1, 0, ToggleCalendar_done, 0);//1=open, 0=close }else{ char cal[MAX_PATH]; memcpy(cal, api.root, api.root_len+1); add_title(cal,"misc\\XPCalendar.exe"); api.Exec(cal,NULL,g_hwndTClockMain); } }