Minimize / Prozesse



  • Okay, ich habe mich dazu entschlossen erste einmal zu beschreiben was das tool machen soll:

    Das tool soll, wenn ein Dienst mit netstart gestartet wird (oder unmittelbar danach mit batch file) das erstellte fenster minimieren. derzeit habe ich die variante dass er einfach das top window nimmt und dann alle minimiert. folgendermaßen hab ich das gemacht 🙂

    #include <windows.h>
    
    int WINAPI
    WinMain ()
    {
        HWND hwnd, hwnd_save;
    //  hwnd = GetTopWindow(NULL);
        hwnd = GetForegroundWindow ();
        hwnd_save = hwnd;
    
        ShowWindow(hwnd, SW_MINIMIZE);
        hwnd = GetForegroundWindow ();
    
        while(hwnd != hwnd_save){
            ShowWindow (hwnd, SW_MINIMIZE);
            hwnd_save = hwnd;
            hwnd = GetForegroundWindow ();
            }
    
        return 0;
    }
    

    Es würde unter Win2k (98, XP) natürlich gehen ShowDesktop zu verwenden. Mag ich aber insofern nicht weil das ganze auf NT4 auch laufen soll, und ich nicht weis wie weit es das unter NT4 gibt (in der MSDN steht nix von NT4)...

    Tja, das was ich oben geschrieben habe is natürlich ne sehr unsaubere Variante (abgesehen davon, dass er die Taksleiste versucht zu minimieren). Folgendes: Geht es das zuletzt aufgekommene window zu minimieren? Bzw. kann ich durch einen Prozessnamen irgendwie den Handle zu dem Window bekommen??

    Oder vieleicht einen Vorschlag zu einer saubereren Methode!?

    [ Dieser Beitrag wurde am 21.08.2002 um 11:23 Uhr von STiAT editiert. ]



  • Möglich wäre z.B. mit einem HOOK das WM_CREATE abzufangen und dann den Dienst per Message zu minimieren.

    Vielleicht gibt es aber noch einfachere Lösungen.



  • meiner meinung nach ist das auch ned ganz sauber....

    kommt ma da wirklich ned über den prozess ran?



  • Wo ist das bitteschön unsauber?

    Ansonsten nimmst du einen Timer mit FindWindowEx() und suchst ein passendes Fenster und minimierst es.
    Mit einem Thread geht das natürlich auch.



  • weil ich da auf n wm_create lauern muss, dH n programm vorher starten dass das wm_create abfängt. das nimmt unnötig CPU-Time... glaub ich 🙂



  • Hmm... i hab ma das grad alles überlegt. Könnt sein dass i das mim HOOK a falsch verstanden habe. Ich hab grad a bissi (die ganze zeit) MSDN geschmökert, und bräuchte eventuell nähere infos zu dem zeug, weil in der MSDN sind darüber ned viele erklährungen...

    Wär nett wenn du etwas näher darauf eingehen könntest. Kannst mich auch im ICQ / MSN kontaktieren..

    ICQ: 123305354
    MSN: stiat@hotmail.com

    TIA

    STiAT



  • Google mal nach SetWindowsHookEx, da findest du sicher was!



  • hm..
    wenn du das process handle hast, dabb geht das mit EnumThreadWindows oder sowas ähnliches.. müsstest in der SDK Hilfe dazu was finden können..
    hoffe dir geholfen zu haben.


Anmelden zum Antworten