Win32: How to hide 3rd party windows in taskbar by hWnd

前端 未结 2 1852
情书的邮戳
情书的邮戳 2020-12-01 05:43

I have to hide popup windows in third party library.

I have implemented windows hook stuff with SetWindowsHookEx and know all the newely created hWnd(s). I listen t

相关标签:
2条回答
  • 2020-12-01 06:12

    You must use GWL_EXSTYLE to get/set the EX flags, GWL_STYLE will not work for EX flags.

    0 讨论(0)
  • 2020-12-01 06:29

    Before you use SetWindowLong, call ShowWindow(hWnd, SW_HIDE), then call SetWindowLong, then call ShowWindow again like ShowWindow(hWnd, SW_SHOW). So your code will look like this:

    long style= GetWindowLong(hWnd, GWL_STYLE);
    style &= ~(WS_VISIBLE);    // this works - window become invisible 
    
    style |= WS_EX_TOOLWINDOW;   // flags don't work - windows remains in taskbar
    style &= ~(WS_EX_APPWINDOW); 
    
    ShowWindow(hWnd, SW_HIDE); // hide the window
    SetWindowLong(hWnd, GWL_STYLE, style); // set the style
    ShowWindow(hWnd, SW_SHOW); // show the window for the new style to come into effect
    ShowWindow(hWnd, SW_HIDE); // hide the window so we can't see it
    

    Here is a relevant quote from Microsoft's Website:

    To prevent the window button from being placed on the taskbar, create the unowned window with the WS_EX_TOOLWINDOW extended style. As an alternative, you can create a hidden window and make this hidden window the owner of your visible window.

    The Shell will remove a window's button from the taskbar only if the window's style supports visible taskbar buttons. If you want to dynamically change a window's style to one that doesn't support visible taskbar buttons, you must hide the window first (by calling ShowWindow with SW_HIDE), change the window style, and then show the window.

    0 讨论(0)
提交回复
热议问题