|
■No88846 (??? さん) に返信 > ■No88844 (魔界の仮面弁士 さん) に返信 >>■No88842 (ぽん さん) に返信 > >>上記URLに、VB.NETでTreeViewに実行中のすべてのコントロールを表示するコードが載せられているのですが >>VB6 互換 Collection を使っていたり、IntPtr を使わずに >>x86 かつ Option Strict Off 前提のコードになっていたり、 >>Wide API ではなく ANSI API になっていて、しかも >>文字列をバイナリで処理していたりするなど、 >>突っ込みどころが満載なので、ゴッソリ書き直したい…。 >> >> > >>ハンドルの取得ができずに困っております。 >>取得はされてますよ。colChilds(j)(0) を表示していないだけ。 >> >>VB.NET 版のコードは、 >> Dim strClass As String は colChilds(j)(1) から取得 >> Dim strTitle As String は colChilds(j)(2) から取得 >>となっていて、それを >> New TreeNode(strClass & " - " & strTitle) >>で表示していますよね。 >> >> >>なので、 >> Dim strHandle As String = CInt(colChilds(j)(0)).ToString("X8") >>などを追加して、 >> New TreeNode(strHandle & " - " & strClass & " - " & strTitle) >>にでも変えてやれば良いんじゃないでしょうか。VB6 版のように。 > > 素晴らしいご回答ありがとうございます! > まだまだ勉強不足のため、分からない部分が多々ありますが、 > 戴いた情報を参考にコーディングしてみようと思います。 > 結果はまたご報告いたします。
おかげさまで無事に表示させることが出来ました! .ToString("X8")でわざわざ16進数へ置換する処理まで入れていただき、大変感謝いたします。 またご質問することがあると思いますので、その際は何卒、宜しくお願い致します!
以下、実現できたコードを載せておきます。 「現在実行中のハンドルのみを列挙」
bytClass = System.Text.Encoding.GetEncoding( "SHIFT-JIS").GetBytes(colChilds.Item(j)(0)) If bytClass.Length < 30 Then Dim p As Integer = bytClass.Length ReDim Preserve bytClass(bytClass.Length + bytSpace.Length - 1) Array.Copy(bytSpace, 0, bytClass, p, bytSpace.Length) ReDim Preserve bytClass(30 - 1) End If Dim strHandle As String = CInt(colChilds(j)(0)).ToString("X8")
If j = 1 Then treeNodeTop = New TreeNode(strHandle) TreeView1.Nodes.Add(treeNodeTop) Else Dim treeNodeSub As TreeNode = New TreeNode(strHandle) treeNodeTop.Nodes.Add(treeNodeSub) End If
|