アイコン情報の取得して、リストビューに表示したい。(VB.NET)

解決


yuu  2003-09-25 09:15:20  No: 108801  IP: [192.*.*.*]

あるアプリケーションを作成しておりまして、
リストビューにファイル一覧を表示させているのですが、
その時に、ファイルのアイコンも表示したいと考えております。

VB6.0のころは、APIを使って実現していたのですが、
VB.NETでは、APIを使わないでできるのでしょうか?

ちなみに、VB6.0のコードをVB.NETで変換してみたのですが、
APIのところで止まってしまいます。

VB6.0のころの取得手順
1.SHGetFileInfoでhIconを取得
2.hIcon(アイコンハンドル)からPictureオブジェクトへ変換
3.イメージリストに変換

2.のところで止まってしまいます。
APIのOleCreatePictureIndirectを使っていますが、ここでエラーになってしまいます。

ソースを見てみたのですが、
アップグレードの際に以下のようなコメントが入っていました。

    'UPGRADE_WARNING: 構造体 tagGUID に、この Declare ステートメントの引数としてマーシャリング属性を渡す必要があります。 詳細については次のリンクをクリックしてください : 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="vbup1050"'
    'UPGRADE_WARNING: 構造体 tagPICTDESC に、この Declare ステートメントの引数としてマーシャリング属性を渡す必要があります。 詳細については次のリンクをクリックしてください : 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="vbup1050"'
    Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" (ByRef lpPictDesc As tagPICTDESC, ByRef riid As tagGUID, ByVal fPictureOwnsHandle As Integer, ByRef ipic As System.Drawing.Image) As Integer


VB.NET
Win2000

編集 削除
yuu  2003-09-25 09:53:19  No: 108802  IP: [192.*.*.*]

エラーの内容を書いてなかったので。

msg  "(エラー番号):  5
(エラー内容):  プロシージャ呼び出しまたは引数が有効ではありません。"

編集 削除
yuu  2003-09-26 13:38:10  No: 108803  IP: [192.*.*.*]

http://support.microsoft.com/default.aspx?scid=kb;EN-US;319340
に、VB.NETでのやり方が出ておりました。

編集 削除