hilfe ... ich bin ein dau , minimiertes programm richtig wiederherstellen ?



  • letzter versuch bevor ich ausn fesnter springe,

    ich hole mir von einem minimierten programm mit caption TEST das handle.
    das minimierte programm mit caption TEST wird durch ShowWindow wieder vorgeholt.

    funktioniert alles wunderbar nur kann ich es danach nicht mehr minimieren.
    der status in der Taskbar steht obwohl es sichtbar ist immernoch auf minimiert.

    const char* Pname = "TEST";
    
                            HWND hWnd=FindWindow(0, Pname);
                            if(hWnd)
                            {
                                    ShowWindow(hWnd ,SW_RESTORE);
                            }
    

    bitte helft mir



  • Hast du mal versucht das Fenster neu Zeichnen zu lassen?



  • komme leider zu keinem ergebniss,
    irgendwie muss man doch dem fremden Programm sagen können das es nicht mehr minimiert ist.

    const char* Pname = "TEST";
    
                            HWND hWnd=FindWindow(0, Pname);
                            if(hWnd)
                            {
                                //    ShowWindow(hWnd ,SW_RESTORE);
    
                                 SetForegroundWindow(hWnd);
                                 ShowWindow( hWnd, SW_SHOWMAXIMIZED );
                                 ShowWindow( hWnd, SW_SHOWNORMAL );
                                 SetActiveWindow(hWnd);
    
                                 SendMessage(hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);
                                 SendMessage(hWnd, WM_PAINT, 1, 0);
                                 UpdateWindow(hWnd);
                           }
    

    leider hat das alles keine auswirkung auf den status



  • Dieser Thread wurde von Moderator/in Jansen aus dem Forum VCL (C++ Builder) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • schonmal mit

    ShowWindow(hwnd, SW_NORMAL);
    

    probiert?

    blubblub schrieb:

    Hast du mal versucht das Fenster neu Zeichnen zu lassen?

    naja neuzeichnen geht zB mit InvalidateRect():

    InvalidateRect(hwnd, 0, TRUE);
    

    mfg,
    andi01.


  • Mod

    Nach einem ShowWindow ist weder ein InvalidateRect noch ein UpdateWindow notwendig!

    Wenn Dein Fenster keine MessageLoop ausführt wird das aberalles nichts nutzen.

    BTW: Mehr als ShowWindow auszuführen ist nicht notwendig... Andernfalls macht besagte Anwendung irgendwas anderes oder ist keine normale Windows-Applikation, oder Du hast das falsche Handle.



  • Wenn Dein Fenster keine MessageLoop ausführt wird das aberalles nichts nutzen.

    hab mal drüber nachgedacht und bin dann dazu übergegangen in meiner application mit caption TEST dieses hier einzubauen.

    eigentlich ist meine application ja VCL aber ich wusste nicht wie ich ein fremdes Handle anspreche ohne WinAPI.

    void __fastcall TForm1::FormPaint(TObject *Sender)
    {
             Application->Restore();
    }
    

    und hiermit hole ich nun die application mit caption TEST aus dem minimierten zustand

    const char* Pname = "TEST";
    
                            HWND hWnd=FindWindow(0, Pname);
                            if(hWnd)
                            {
                                    ShowWindow(hWnd ,SW_RESTORE);
                                    SetForegroundWindow(hWnd);                                
                            }
    

    Nun funktioniert alles wie gewollt.



  • Nur SetForegroundWindow() reicht glaube ich nicht. Da muss man wild herumfrickeln, irgendwas mit thread input, activity oder was weiß ich.


Anmelden zum Antworten