Funktion um herauszufinden, ob ein Fenster / Control bereit für Eingabe(n) ist?



  • Hallo,

    der Titel sagt eigentlich schon alles: Ich suche nach einer Funktion, mit der ich herausfinden kann, ob ein Fenster / Control bereit für Eingabe(n) ist.

    Danke schon einmal :s





  • Nur weil das Fenster / Control sichtbar ist, muss es doch nicht direkt bereit für Eingaben sein, oder? 😕



  • was für bedenken hast du denn das ein fenster nicht bereit für eine eingabe ist!



  • Wenn der Rechner so ausgelastet ist, dass das (fremde) Programm hängt / "laggt"... keine Ahnung. Ich meine mal etwas von einer solchen Funktion gehört zu haben, kann mich aber nicht mehr erinnern, in welcher Sprache (kann auch eine billige Macro-Sprache gewesen sein)...



  • Wenn der Rechner so ausgelastet ist, dass das (fremde) Programm hängt

    das sind zwei irgendwie paar stiefel, finde ich...

    wenn der rechner sooo ausgelastet ist, das ein Programm scheinbar keine Nachrichten entgegen nimmt, hat der rechner ein problem, nicht zwingend das programm das nachrichten empfangen soll.

    wenn das Programm hängt das nachrichten empfangen soll, hat nicht der rechner ein problem sondern das programm, es wird nur zum problem für den Rechner.

    soviel ich weis, hat windows eine nachrichtenschleife, in die jederzeit, nachrichten aufgenommen und zu gegebener zeit abgearbeitet werden. wenn also irgend ein programm soviel rechenleistung braucht, das die nachrichtenschleife von windows steht und nicht weiter abgearbeitet wird, heist das nicht, das keine nachrichten entgegen genommen werden. Sondern die nachrichtenschleife wartet nur bis sie mit der bearbeitung vortfahren kann. kann sie es irgend wann wird die nachricht weitergeleitet wenn sie in der warteschlange an der reihe ist.

    wenn im gegenzug dein programm sooo beschäftigt ist, das die Nachrichtenschleife des Programms hängt, hat dein Programm ein problem und du solltest vieleicht die funktion die die Nachrichtenschleife des programms blockiert, in einen eigenen thread auslagern, damit die Nachrichtenschleife des Programms weiterhin nachrichten empfangen und abarbeiten kann.


  • Mod

    Ein normales GUI Programm reagiert spätestens nach einer Sekunde auf eine Winodwsnachricht. Du kannst einfach SendMessageTimeout verwenden und WM_NULL senden. Kommt SendMessageTimeout ohne Timeout zurück, dann ist die Message-Loop am laufen. Was nicht heißt, dass das Fenster evtl. nicht disabled ist.

    Ansonsten gibt es auch WaitForInputIdle.



  • Danke, klappt super mit WaitForInputIdle!


Anmelden zum Antworten