0

win32 API にアクセスしてタスクバーの位置、サイズ、状態、および端を取得するクラスがあります。クラスを使用して、タスクバーの場所に応じてアラートを作成する場所を認識します。新しいアラートが生成または削除されたときのタスクバーに応じて、アラートの場所を更新する方法があります。

update メソッドを呼び出せるように、タスクバーが移動したことを検出する方法はありますか? そうすれば、ユーザーがタスクバーを移動すると、新しいアラートが来るか、アラートが削除されるまで、ばかげた場所にいるのではなく、適切な場所にアラートが移動します。

私が考えたのは、最後に生成した現在のタスクバー オブジェクトをタイマーで 1 秒ごとにチェックし、何かが変更された場合は update メソッドを呼び出すことでした。これを行うための「より簡単な」または「より良い」方法があるかどうか疑問に思っています。

(Visual Studio 2010 C# を使用)

TL;DRメソッドを呼び出すためにタスクバーが移動したことを検出する必要があります。

4

1 に答える 1

-1

一般的な考え方として、タスクバー ウィンドウをサブクラス化する必要があります。ご存知かもしれませんが、すべてのウィンドウは、システムまたは他のウィンドウから送信されたすべてのメッセージを処理する WndProc (ウィンドウ プロシージャ) と呼ばれるものを定義します。

この関数に直接アクセスすることはできませんが、適切な API (SetWindowLong) を使用して、選択した別の WndProc 関数にメッセージ フローをリダイレクトできます (ターゲット ウィンドウが正常に機能するように、古い WndProc をコールバックすることを忘れないでください)。

これにより、対象のウィンドウが受信したすべてのメッセージを監視できます。特に、あなたの場合の WM_MOVE メッセージ。

これは簡単な説明です。よく読むことをお勧めします。

ここに開始リンクがあります:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms633569(v=vs.85).aspx

于 2012-05-19T03:13:55.817 に答える