2011-01-08 10 views
1

私は、ウィンドウを列挙してリストに追加するためにuser32.dllを利用するいくつかのinteropコードを書いています。 WindowDataは、ウィンドウhWnd、タイトル、位置、サイズ、実行可能なパス、アプリケーションアイコンなどを格納するローカルのINotifyPropertyChangedクラスです。開いているすべてのウィンドウのウィンドウデータに「バインド」する方法はありますか?

ウィンドウタイトル、位置、サイズの変更に効果的にバインドする方法はありますか、など?毎秒情報を更新するためにDispatcherTimerを使用する必要はありません。シンプルなイベントハンドラやコールバックなどを使うことができたら、私はそれを好むでしょう。

誰もが考えている?

答えて

0

ポーリングせずにすべてのウィンドウのウィンドウデータを効率的に追跡するには、ウィンドウの作成または削除の通知を登録し、追跡しようとしているウィンドウデータに影響するメッセージキューをすべてフックして処理する必要があります。残念なことに、これはかなり大変な作業です。頭が欲しいのであれば、Spy ++がどのように実装されているかを見てみましょう。ここでの記事です:

あなたは再考えるだけポーリングしょっちゅう、慎重ObservableCollectionでのみ変更されたデータを更新することだったかもしれないことを見た後。

関連する問題