2009-04-06 15 views
1

基本的に、私はIsWindowMoving(HWND)Win32 API呼び出しを探しています。ユーザーが現在ウィンドウを移動しているかどうかを知る必要があります。特定のウィンドウが現在移動中であるかどうかを確認します

ウィンドウが私に属していないため、WM_SYSCOMMAND/SC_MOVEまたはWM_MOVINGのリスンはできません(32/64 interopによってサブクラス化またはフックしたくありません)。

答えて

1

ウィンドウがあなたに属しておらず、メッセージをスヌーピングするつもりがない場合は、そのウィンドウのハンドルを取得するのが最も良いと思います。これは、ハンドル上で動作する情報関数呼び出しが何であれ、あなたを制限します。私は、ウィンドウが動かされていることをユーザーに知らせることができるそのような呼び出しがないことを知っています。

あなたは運が悪いかもしれません。

+0

GetGUIThreadInfo()関数の呼び出しは役に立ちませんでしたか? –

1

GetGUIThreadInfoでこれを行うことができます。フックが必要ありません。 GetWindowThreadProcessIdを使用してhwndのTIDを取得し、GUITHREADINFO.flagsとGUITHREADINFO.hwndMoveSizeをチェックして、ウィンドウが移動/サイズループにあるかどうかを確認します。

1

フックやサブクラスなど何もしたくない場合は、ポーリングが最も簡単な方法かもしれません。 GetWindowRectを使用すると、ウィンドウの前と現在の位置とサイズを追跡できます。デルタを使用すると、ユーザーがウィンドウを移動(またはサイズ変更)しているかどうかを検出できます。あなたはUIを扱っているので、あまりにも速くポーリングする必要はありません(1秒に2〜5回でも十分です)。

関連する問題