名前 題名 ▼ Mr.XRAYさん > ▼ Saraさん,どうも > > > 今,別の解決方法も考えています. > > エクスプローラのツリーのハンドルで操作することを考えました. > このハンドル不思議です.このハンドルでウィンドウプロシージャーでの > 操作を考えたのですが,確かに設定はできました. > しかし,メッセージを補足することができません. > > ところが,このハンドルで,位置とサイズは取得,更新できます. > (実際にコンポ内で,位置とサイズはWndProcで再設定しています) > > 前にエクスプローラのサンプル([945])での記憶があったので, > メッセージ処理は,フックしかないと思っていたのですが, > 考えてみれば,このエクスプローラのオブジェクト,同じプロセス内で > 動作しているんですよね. > > そこで,このハンドルをプロパティにして,以下の手順で検出すると > いうのはどうでしょう. > > (1)このコンポを配置しているフォームに TApplicationEventsを配置 > TApplicationEventsは[Addtioanl]タブにある > > (2) TApplicationEventsのOnMessageイベントを作成 > > (3) このイベントを以下のようなコードにする > > procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; > var Handled: Boolean); > var > APos : TPoint; > ARect : TRect; > begin > if Msg.message = WM_MOUSEMOVE then begin > GetCursorPos(APos); > GetWindowRect(plExplorerFolderTree1.hwndTree, ARect); > if PtInRect(ARect, APos) then begin > //ここに処理を書く > end; > end; > end; > > 動作確認は,Windows 7 U64 + Delphi 2010(UP5) + IE8 > > hwndTreeをpublicなプロパティにしたコード GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link