Skip to content

Instantly share code, notes, and snippets.

@Aetopia
Created January 9, 2024 17:41
Show Gist options
  • Save Aetopia/0154d22b57fad929c106ea3c2dcfa993 to your computer and use it in GitHub Desktop.
Save Aetopia/0154d22b57fad929c106ea3c2dcfa993 to your computer and use it in GitHub Desktop.
MarkFullscreenWindow, 2 implementations.
BOOL MarkWindowFullscreen(HWND hWnd, BOOL fFullscreen)
{
ITaskbarList2 *pTaskbarList2 = NULL;
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
CoCreateInstance(&CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, &IID_ITaskbarList2, (LPVOID *)&pTaskbarList2);
pTaskbarList2->lpVtbl->HrInit(pTaskbarList2);
HRESULT hr = pTaskbarList2->lpVtbl->MarkFullscreenWindow(pTaskbarList2, GetConsoleWindow(), TRUE);
pTaskbarList2->lpVtbl->Release(pTaskbarList2);
return SUCCEEDED(hr);
}
BOOL MarkFullscreenWindow(HWND hWnd, BOOL fFullscreen)
{
if (!GetShellWindow() || !IsWindow(hWnd))
return FALSE;
UINT uMsg = RegisterWindowMessageW(L"SHELLHOOK");
WCHAR szClassName[256] = {};
HWND hWndChildAfter = NULL;
while ((hWndChildAfter = FindWindowExW(NULL, hWndChildAfter, NULL, NULL)))
{
RealGetWindowClassW(hWndChildAfter, szClassName, 256);
if (CompareStringOrdinal(L"WorkerW", -1, szClassName, -1, FALSE) == CSTR_EQUAL)
PostMessageW(hWndChildAfter, uMsg, fFullscreen ? 0x35 : 0x36, (LPARAM)hWnd);
}
return TRUE;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment