Ist IsHungAppWindow() vor AttachThreadInput() empfohlen?



  • Hi community,

    in meiner Software befindet sich ein Codeschnipsel, in dem das Fenster in den Vordergrund gebracht werden soll. Dazu verwende ich im Wesentlichen die Funktionen

    SetForegroundWindow()
    AttachThreadInput()
    

    Was passiert eigentlich wenn man AttachThreadInput() aufruft, während die fremde Applikation (die den Fokus hat) "hängt" (d.h. Windows-Hinweis "keine Rückmeldung")?
    Returniert die Funktion sofort mit Fehlermeldung oder wird da dann meine Applikation ebenfalls mit"hängen" ?

    Ausgehend von diesen Überlegungen bin ich auf die Funktion IsHungAppWindow() (ab Win2k) gestoßen.
    Macht es Sinn, vor dem Aufruf von AttachThreadInput() vorher mit IsHungAppWindow() abzuprüfen?

    Für Eure Tipps bin ich dankbar
    Martin



  • Schaden kann es vermutlich nicht.

    Was passiert wenn du AttachThreadInput() und dann SetForegroundWindow() auf ein "hängendes" Fenster aufrufst, kann ich dir nicht sagen. Aber - falls du in den nächsten paar Stunden keine bessere Antwort bekommst - probier es doch einfach aus, und lass es uns wissen 🙂

    Ein "hung window" zum Testen lässt sich ja leicht mit einem kleinen Programm basteln - ein "Sleep(lange)" in einem Button-Clicked-Handler sollte reichen.



  • Hi hustbaer,
    ich denke auch so wie Du es schon geschrieben hast: Schaden kann es vermutlich nicht.

    Dann werde ich bei passender Gelegenheit mal einen Minimal-Rumpf (mit GUI-Messageschleife) zusammenschreiben um zu testen & debuggen.
    Und natürlich die Ergebnisse hier posten.

    Hab noch 'ne Detailfrage zum sleep(lange) von sagen wir mal 30sec: Reicht diese Funktion alleine schon aus "keine Rückmeldung" von Windows auszulösen?
    Ich meine nur, der Task-Scheduler im Kernel weiß ja, daß dieser Task 30s lang keine Zeitscheibe mehr zugeordnet bekommt haben möchte. Oder nicht?
    Auch das werde ich mal testen.

    Martin



  • Sleep müsste reichen.
    Ich denke nicht dass hier unterschieden wird warum ein Fenster keine Messages mehr pumpt. Wäre nicht sinnvoll und daher unnötig kompliziert.



  • Zur Info:

    So, nachdem ich diese Frage lange genug vor sich hingeschoben habe:
    Dieses Abprüfen mit IsHungAppWindow() ist überflüssig!

    Denn AttachThreadInput() funktioniert auch, wenn die betreffende Applikation "hängt"!

    Getestet mit Sleep(200000);

    Offensichtlich haben die Entwickler von Windows diesen Fall berücksichtigt.
    Martin


Anmelden zum Antworten