tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルListview にアイコンをつけて表示する
記事No8549
投稿日: 2009/01/09(Fri) 23:47
投稿者のぶ
いつもお世話になっています。
今、エクスプローラを作成してみているのですが、ファイルに関連付いているアイコン
をListviewに表示したいのですが、色々参考にしてみようみまねで作っているのですが
エラーになってしまいます。

                Dim GetExtension As String = sName2.Path
                Dim shinfo As New SHFILEINFO()
                Dim hSuccess As IntPtr = SHGetFileInfo(sName2.Path, 0, shinfo, 80, SHGFI_ICON)
                If hSuccess.Equals(IntPtr.Zero) = False Then
                    appIcon = Icon.FromHandle(shinfo.hIcon)
                End If

                Dim item1 As New ListViewItem(aaa, appIcon.ToBitmap())
                >> ↑でエラーになってしまいます。

    Private Declare Ansi Function SHGetFileInfo Lib "shell32.dll" (ByVal pszPath As String, ByVal dwFileAttributes As Integer, ByRef psfi As SHFILEINFO, ByVal cbFileInfo As Integer, ByVal uFlags As Integer) As Integer

    Private Const SHGFI_SMALLICON As Integer = &H1
    Private Const SHGFI_ICON As Integer = &H100
    Private Const SHGFI_USEFILEATTRIBUTES As Integer = &H10

    Private Structure SHFILEINFO
        Public hIcon As IntPtr
        Public iIcon As IntPtr
        Public dwAttributes As Integer
        Public szDisplayName As String
        Public szTypeName As String
    End Structure

ロジックがきたなくてすいませんが誰かご教授願います。

[ツリー表示へ]
タイトルRe: Listview にアイコンをつけて表示する
記事No8551
投稿日: 2009/01/11(Sun) 16:44
投稿者のぶ
あっ、すいません。 今使ってる環境は
WinXP で VB2008 を使ってます。

[ツリー表示へ]
タイトルRe^2: Listview にアイコンをつけて表示する
記事No8553
投稿日: 2009/01/11(Sun) 17:06
投稿者花ちゃん
> あっ、すいません。 今使ってる環境は
> WinXP で VB2008 を使ってます。

下記もまだですよね。
それとハンドルネームは統一するようにして下さい。

質問される前に[当サイト内外の検索]を使って必ず、下調べをして下さい
(検索キーワード  ListView アイコン VB.NET)

必ず【掲示板ご利用に際し】をよく読んでからご利用願います
(エラーがでるなら、エラーメッセージの内容ぐらい投稿しないと...。)

[ツリー表示へ]
タイトルRe^3: Listview にアイコンをつけて表示する
記事No8556
投稿日: 2009/01/11(Sun) 23:50
投稿者のぶ
返信ありがとうございます。
ハンドルネームですが統一したのですが・・・
今日は、いつもと違う場所で漫喫で返信したので、問題だったでしょうか?
以後、同じPCで送るように気をつけます。 すいません。

> 下記もまだですよね。
> それとハンドルネームは統一するようにして下さい。
>

すいません、下記はまだでしたトライしてみます。

> 質問される前に[当サイト内外の検索]を使って必ず、下調べをして下さい
> (検索キーワード  ListView アイコン VB.NET)
>

下記、以後気をつけます。

> 必ず【掲示板ご利用に際し】をよく読んでからご利用願います
> (エラーがでるなら、エラーメッセージの内容ぐらい投稿しないと...。)

ご指摘ありがとうございました。
やってみます。

[ツリー表示へ]
タイトルRe^4: Listview にアイコンをつけて表示する
記事No8557
投稿日: 2009/01/12(Mon) 00:45
投稿者のぶ
下記のやつを見本にトライしてみたのですが・・・。

>> msdn.microsoft.com/ja-jp/library/ms404308.aspx

上記だと dir をつかってこんな感じにロジックが書いてあるのですが、

    Dim file As FileInfo
    For Each file In dir.GetFiles()
        
        省略
        
        If Not (imageList1.Images.ContainsKey(file.Extension)) Then
            imageList1.Images.Add(file.Extension, iconForFile)
        End If
        item.ImageKey = file.Extension
        listView1.Items.Add(item)

    Next file

自分の方は shell.application でかいていたので、こんな感じに変えてみたのですが

        objShell2 = CreateObject("Shell.Application")
        fol2 = objShell2.NameSpace(e.Node.FullPath & "\") 'Windowsフォルダを取得
        fc2 = fol2.Items()
        For Each sName2 In fc2
            省略
            If Not (imageList1.Images.ContainsKey(sName2.Extension)) Then
               ↑でエラーになってしまいます。公開メンバ 'Extension' は型 'FolderItem2' に見つかりませんでした。
       Next

なので、Dim file As FileInfo を定義してなんとかしようとしたら、
FileInfo が定義されていませんと・・・。 
FileInfoを使えるようにするには、プロジェクト→参照でなにかロードしないといけないのでしょうか?
誰か、ご教授願います。

[ツリー表示へ]
タイトルRe^3: Listview にアイコンをつけて表示する
記事No8561
投稿日: 2009/01/12(Mon) 23:15
投稿者のぶ
花ちゃんさん 何とかできましたありがとうございます。
画質はとても悪かったですが、できたことに満足なのでいったんおいときですが。

色々とありがとうございました。

[ツリー表示へ]