2009-04-06 22 views
1

Grundsätzlich bewegt wird, ich bin auf der Suche nach einem IsWindowMoving (HWND) Win32-API-Aufruf. Ich muss wissen, ob der Benutzer gerade ein Fenster bewegt.fest, ob ein bestimmtes Fenster wird derzeit

Das Fenster gehört nicht zu mir, daher ist das Abhören von WM_SYSCOMMAND/SC_MOVE oder WM_MOVING nicht möglich (ich möchte keine Unterklasse oder Hook wegen 32/64 Interop).

Antwort

1

Wenn das Fenster nicht zu Ihnen gehören und Sie keine Nachrichten gehen schnüffeln, die beste Sie können I halten, einen Griff an diesem Fenster erhalten denken. Das beschränkt Sie auf alle Informationsfunktionsaufrufe, die auf einem Handle arbeiten. Ich kenne keinen solchen Anruf, der den Benutzer darüber informieren kann, dass das Fenster verschoben wird.

Sie können von Glück.

+0

Hat der GetGUIThreadInfo() Funktionsaufruf Ihnen nicht helfen? –

1

Sie können dies tun, mit GetGUIThreadInfo - ohne Verhaken benötigt. Verwenden Sie GetWindowThreadProcessId, um die TID für Ihr hwnd abzurufen, und überprüfen Sie dann GUITHREADINFO.flags und GUITHREADINFO.hwndMoveSize, um festzustellen, ob sich Ihr Fenster in einer Verschiebungs-/Größenschleife befindet.

1

Wenn Sie nicht wollen, Unterklasse, Haken, oder irgendetwas anderes wie das, denke ich, Polling links der einfachste Weg sein könnte. Mit GetWindowRect können Sie die vorherige und aktuelle Position und Größe eines Fensters verfolgen. Wenn Sie ein Delta verwenden, können Sie erkennen, ob der Benutzer das Fenster bewegt (oder sogar die Größe ändert). Da Sie sich mit UI beschäftigen, müssen Sie nicht zu schnell abfragen (selbst 2-5 mal pro Sekunde sollte ausreichen).

Verwandte Themen