■No94653 (Tom さん) に返信 > (LVN_DBLCLK はLBN_DBLCLKの誤字でしょうか?) 誤字です。 が!!!! > リストボックスはSysListView32の部品のハンドルをセット > この設定で正しいでしょうか? SysListView32は、「リストボックス」ではなく「リストビュー」と呼ばれるものです。 リスト上に表示されるというところが似てるだけで全く別のコントロールです。 > なんかかなりいいところまで来ているような気がするのですが、どうにも煮詰まっています。 > お知恵をお借りできませんでしょうか? > リストビューでのダブルクリックとなるとまた全然変わってきます。 こっちは、座標がいるんじゃなかったかなぁ? リストボックスは、クラス名が "ListBox" で、C# で言えば、System.Windows.Forms.ListBox に当たるコントロールです。 それに対し、リストビュー(SysListView32)は、System.Windows.Forms.ListView にあたるコントロールです。 ちなみに SysTabControl32 は、C# で言えば、System.Windows.Forms.TabControl に当たるコントロールです。 で、ダブルクリックですが、WM_NOTIFY という通知メッセージをSendMessage する必要があります。 が、こちらは構造体をLPARAMに指定するうえ、座標も必要になりますので、かなり面倒なことになります。 Hongliang さんがちらっと書いていますが、ReadProcessMemory など相手プロセス上のメモリを操作するAPIを 駆使できないと、実現できません。APIがわかれば、ちょいちょいと組めるようなものでもありません。 比較的お手軽なのは、SendInput API を使って、実際のマウスの動きをエミュレーションする方法ですが こちらは画面上の座標が必要なのと、当たり前ですが、操作したいウィンドウが最前面にないと操作できないので > マウスカーソルがそこまで届かない場所(デスクトップ描画外)にいる場合はありえます。 と最初に書いていたように、画面外にいるとどうなるかはわかりません(試したことないので...) と、今度は別の部分。 > 親ウィンドウはタブシートだったので、SysTabControl32の部品のハンドルをセット > indexは3(3行目の意味)をセット > リストボックスはSysListView32の部品のハンドルをセット > この設定で正しいでしょうか? > (2つのハンドルはそれぞれ全部品の中から1つしかなかったので、誤って別の部品のハンドルってことはあり得ません) ん?このウィンドウ関係は違う気がします。 C#も含め、タブとリストの2つなら以下のような画面構成になっているはずです。 (Spy++的な表現) + 親ウィンドウ(コントロールの張り付いているフォーム) + タブコントロール(SysTabControl32) + リストビューコントロール(SysListView32) タブとリストで親子関係だとこんな感じになってると思います。 + タブコントロール(SysTabControl32) + リストビューコントロール(SysListView32)
- Child Tree -