static VOID NTAPI LoadCallback( _In_opt_ PVOID Parameter, _In_opt_ PVOID Context ) { // Update settings TaskbarIconType = PhGetIntegerSetting(SETTING_NAME_TASKBAR_ICON_TYPE); // Get the TaskbarButtonCreated Id TaskbarButtonCreatedMsgId = RegisterWindowMessage(L"TaskbarButtonCreated"); // Allow the TaskbarButtonCreated message to pass through UIPI. ChangeWindowMessageFilter(TaskbarButtonCreatedMsgId, MSGFLT_ALLOW); // Allow WM_COMMAND messages to pass through UIPI (Required for ThumbBar buttons if elevated...TODO: Review security.) ChangeWindowMessageFilter(WM_COMMAND, MSGFLT_ALLOW); // Set the process-wide AppUserModelID SetCurrentProcessExplicitAppUserModelID(L"ProcessHacker2"); if (SUCCEEDED(CoCreateInstance(&CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, &IID_ITaskbarList3, &TaskbarListClass))) { if (!SUCCEEDED(ITaskbarList3_HrInit(TaskbarListClass))) { ITaskbarList3_Release(TaskbarListClass); TaskbarListClass = NULL; } } PhRegisterCallback(&PhProcessesUpdatedEvent, ProcessesUpdatedCallback, NULL, &ProcessesUpdatedCallbackRegistration); }
static void win32_display_server_destroy(void *data) { dispserv_win32_t *dispserv = (dispserv_win32_t*)data; #ifdef HAS_TASKBAR_EXT if (g_taskbarList && win32_taskbar_is_created()) { ITaskbarList3_Release(g_taskbarList); g_taskbarList = NULL; } #endif if (dispserv) free(dispserv); }
static void win32_display_server_destroy(void *data) { dispserv_win32_t *dispserv = (dispserv_win32_t*)data; if (win32_orig_width > 0 && win32_orig_height > 0 ) video_display_server_switch_resolution(win32_orig_width, win32_orig_height, win32_orig_refresh , (float)win32_orig_refresh ); #ifdef HAS_TASKBAR_EXT if (g_taskbarList && win32_taskbar_is_created()) { ITaskbarList3_Release(g_taskbarList); g_taskbarList = NULL; } #endif if (dispserv) free(dispserv); }