Alle Fenster Minimieren



  • Hallo,
    wie kann ich alle geöffneten Fenster minimieren?
    Sollte irgendwie mit ShowWindow() gehen, aber wie bekomm ich alle HWND's der Fenster?

    mfg



  • #include "shldisp.h"
    
    int main()
    {
    	IShellDispatch *sh;
    	Coinitialize(0);
    	CoCreateInstance(CLSID_Shell, 0, CLSCTX_INPROC_SERVER, IID_IShellDispatch, (void**)&sh);
    	sh->MinimizeAll();
    	sh->Release();
    	CoUninitialize();
    	return 0;
    }
    


  • Habs jetzt mit EnumWindows gemacht, aber da tauchen dann über 100 Fenster auf, wahrscheinlich auch alle, die versteckt sind.
    Gibts ne Möglichkeit, diese zu "filtern"?

    Hier der Momentane Code:

    BOOL CALLBACK EnumProc(HWND hWnd, LPARAM lParam)
    {
        ShowWindow(hWnd, SW_NORMAL);
      return(TRUE);
    }
    




  • Mit SW_NORMAL minimiert man auch keine Fenster ...



  • Jup das geht mit WM_MINIMIZE, ich hab das nur gemacht, weil bei Minimize nicht nur alle 150 Fenster angezeigt werden, sondern dann auch noch Vista hängen bleibt

    Es geht jetzt - mit Enum Windows:

    static BOOL WINAPI MyEnumProc(HWND hWnd, LPARAM)
    {
       RECT rect;
       GetWindowRect(hWnd, &rect);
    
       if(hWnd != NULL            &&  // sanity
          IsWindow(hWnd)          &&  // sanity
          IsWindowVisible(hWnd)   &&  // not hidden
          GetParent(hWnd) == NULL &&  // has no parent
          !IsIconic(hWnd)         &&  // not already minimized
          rect.right > rect.left  &&  // some windows have funky size
          rect.bottom > rect.top)
          CloseWindow(hWnd);
    
       return TRUE;
    }
    
    // UND DANN
    
    EnumWindows(MyEnumProc, 0);
    


  • Ich habe mal eine Frage, ist es möglich mit einer kleinen Funktion das man mit der Maus irgentwelche Fenster auf den Desktop anklickt und diese sich dann verkleinern und in einem anderen Fenster nebeneinander anordnen.
    So das eine Art Diashow von den Fenstern entstehen, wäre für die Hilfe wirklich dankbar.


Anmelden zum Antworten