あるアプリケーションを作成しておりまして、
リストビューにファイル一覧を表示させているのですが、
その時に、ファイルのアイコンも表示したいと考えております。
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
エラーの内容を書いてなかったので。
msg "(エラー番号): 5
(エラー内容): プロシージャ呼び出しまたは引数が有効ではありません。"
http://support.microsoft.com/default.aspx?scid=kb;EN-US;319340
に、VB.NETでのやり方が出ておりました。