投稿者 魔界の仮面弁士  (社会人) 投稿日時 2010/1/22 18:20:24
> もうすこし説明して戴けないでしょうか
それらの点は、私も情報としては持ち合わせていません。
技術的に可能であるという点を調べたのみです。


> 1.候補ウィンドウのハンドル取得は?
私が試した時はただの実験コードでしたので、マウスカーソル位置にあるウィンドウを
調べるために、VB6 から WindowFromPoint でタイマー監視しました。

そして候補ウィンドウが一度消えてから、再度表示された後も、同じ HWND が得られたため、
そこで得た HWND を Spyxx.exe で確認した所、実体が ListView であり、それらの
表示/非表示が切り替わっている事が分かりました。
まずは、Vista でも同様の動作であるかどうかを確認した方が良いでしょう。

その結果、XP と同じ動作であるならば、VB.NET からは FindWindowEx などを通じて、
クラス名からウィンドウを取得できるかもしれません。試してはいないですけれども。


> 2.Wm_SETFONTを送出タイミング(どのイベント)は?
Wm_SETFONT ではなく WM_SETFONT ですが、それはともかく。

1. で調べた際には、候補ウィンドウが表示されていないときもウィンドウ自体は
存在していたので、TextBox に 1. で調べたハンドルを入力し、それを Button.Click で
送出するような VB.NET アプリを記述したのみです。実際の運用で、どのタイミングが
適切かは試行錯誤してみてください。もっとも、既定のオートコンプリートのままで
済むように、仕様を見直して頂けるように働きかけるべきだとは思いますけれども。


ちなみに私は、Form1.Load で Button1.Font.ToHfont() をフィールドに取得しておき、
それを Button1.Click にて、lParam = TRUE な WM_SETFONT を送出しました。
実験コードなので私は省きましたが、実際には、DeleteObject も必須でしょうね。