tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルhwndからControlを取る方法
記事No10505
投稿日: 2011/04/27(Wed) 13:39
投稿者camputer

 今日は、いつも質問させていただいております。どうぞよろしくお願いいたします。
プログラム歴10年程度&VB歴3年程度、 環境:XP+VB2008EE
でございます。

 タスクバーの色々な情報を取って楽しんでおりますが、そのハンドルから
サイズなどの情報は取れたのでございますが、Control自体を掴むことができません。。
検索いたしまして、下の「コード1」のようなやり方でhwndからControlが
取れる、といった記事を見つけましたが、MsgBoxいたしましても空でございます。

        Dim hwnd As IntPtr = FindWindow("Shell_TrayWnd", "")

        Dim タスクバー As Control = System.Windows.Forms.Control.FromChildHandle(hwnd) 'コード1
        MsgBox(タスクバー)

 あと、Googleや花ちゃん様のヒット件数.exeで「"FromChildHandle(hwnd)"」と
検索いたしましても何故かヒット件数が少ないので、もしかしたらこれ以外に
何かよく知られている方法でもあるのかな??などと考えている次第でございます。

 もし何かタスクバーのControlを捕まえる方法などございましたら
是非ともご紹介いただきたくお願いいたします。
 どうぞよろしくお願いいたします。

[ツリー表示へ]
タイトルRe: hwndからControlを取る方法
記事No10506
投稿日: 2011/04/27(Wed) 17:49
投稿者Hongliang
不可能です。
// FromChildHandle は同じプロセスで作成された Control インスタンスのハンドルに対してのみ使用できる物です。

[ツリー表示へ]
タイトルRe^2: hwndからControlを取る方法
記事No10507
投稿日: 2011/04/27(Wed) 18:19
投稿者camputer
 Hongliang様

 どうもありがとうございます!!!m(_ _)m
 以前もアドバイスいただきました。この度はご閲覧いただき
誠にありがとうございます。

>同じプロセスで作成された Control インスタンスのハンドルに対してのみ使用できる物です

 教えていただけてよかったです。またずっとトライしてしまいますところでした^^;

 他の方法ですが、Googleで「"control from hwnd" -FromChildHandle」
と検索してみましたが、英語・日本語サイト共に「おそらく無いよ」といった
コメントばかりでございますね。。。
もしこれが出来れば非常に面白いと思ったのでございますが。。。

 もう少し頑張って探してまいります!!
この度はご親切にアドバイスいただきまして、
誠にありがとうございました!!!m(_ _)m

[ツリー表示へ]
タイトルRe: hwndからControlを取る方法
記事No10508
投稿日: 2011/04/27(Wed) 20:38
投稿者魔界の仮面弁士
>  もし何かタスクバーのControlを捕まえる方法などございましたら

相手が .NET マネージのウィンドウであれば取得することも出来るかも知れませんが、
タスクバーはアンマネージなウィンドウでしょうから、それを直接 マネージ Control に
変換することは出来ないかと思います。
(IWin32Window 化するぐらいならできるかも知れませんが…)

Managed Spy
http://msdn.microsoft.com/ja-jp/magazine/ee210348.aspx

[ツリー表示へ]
タイトルRe^2: hwndからControlを取る方法
記事No10510
投稿日: 2011/04/27(Wed) 21:58
投稿者camputer
 魔界の仮面弁士様

 どうもありがとうございます!!!m(_ _)m
今ManagedSpyで遊ばせていただいております^^

>.NET マネージのウィンドウであれば取得することも出来るかも知れませんが
 はい、是非ともやってみたいですね^^ が、「出来るかも」と
仰られるという事は、滅多にやらないような事かもしくは
他の方法の方がよい、という事なのでございましょうね。

>タスクバーはアンマネージなウィンドウでしょうから、それを直接 マネージ Control に
変換することは出来ないかと思います。
 はい、どうもありがとうございます。それが分かっただけで
十分な収穫でございますm(_ _)m
 ここで皆様から「出来る事か出来無い事(or厳しい事)か」を
はっきりお教えいただける事が非常に大きなヒントになっております。
(否定していただかないといつまでもずっと検索ばかりしそうですし。。)

>IWin32Window
を今調べております(*ノωノ)

 まだきちんと理解しておりませんが、お返事が遅くなるのは
嫌ですので、今からもう少し調べてまいります!


 今回も、お忙しい中ご面倒を見ていただき誠にありがとうございました!!!
今後もどうぞよろしくお願い致します!!(`ー´)ゞ

[ツリー表示へ]