none
VBでファイルアイコンを取得する方法 RRS feed

  • 質問

  • VB2010でランチャー的なものを作ってます。

    調べてみたら、SHGetFileInfo関数とかAPIなどを使うとアイコンを取得できるとあったんですけど。。

    使い方が全然分かりません。

    一応、コードは打ってみたんですけど、表示されません。。

    以下コード。

            Dim appIcon As Icon = System.Drawing.Icon.ExtractAssociatedIcon("C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe")

     

            Me.Picture = New System.Windows.Forms.PictureBox

            Me.Picture.Name = "pictureBox1"

            Me.Picture.Location = New System.Drawing.Size(256, 256)

            Me.Picture.Image = appIcon.ToBitmap

            Me.Controls.Add(Picture)

     

    どこが悪いのかご指摘お願いします。

    あと、もっと簡単にできる方法があれば教えてください!

    2011年2月9日 4:24

回答

  • Icon.ExtractAssociatedIcon メソッドで取得できます。

    Icon.ExtractAssociatedIcon メソッド (System.Drawing)


    Blog:プログラマーな日々 http://d.hatena.ne.jp/JHashimoto/
    • 回答としてマーク ハジ 2011年2月9日 6:25
    2011年2月9日 5:43
  • Dim appIcon As Icon = System.Drawing.Icon.ExtractAssociatedIcon("C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe")
    Dim picture = New System.Windows.Forms.PictureBox
    picture.Location = New System.Drawing.Size(256, 256)
    picture.Image = appIcon.ToBitmap
    picture.Left = 50
    picture.Top = 50
    Me.Controls.Add(picture)
    

    上記でできました。 (パスは XP のため違ってます)

    Me.Picture というのが何なのかわかりませんが、Left・Top を指定してないため想定外の位置に表示してたというヲチじゃないですよね?


    ひらぽん http://d.hatena.ne.jp/hilapon/
    • 回答としてマーク ハジ 2011年2月9日 6:26
    2011年2月9日 5:53
    モデレータ

すべての返信

  • Icon.ExtractAssociatedIcon メソッドで取得できます。

    Icon.ExtractAssociatedIcon メソッド (System.Drawing)


    Blog:プログラマーな日々 http://d.hatena.ne.jp/JHashimoto/
    • 回答としてマーク ハジ 2011年2月9日 6:25
    2011年2月9日 5:43
  • Dim appIcon As Icon = System.Drawing.Icon.ExtractAssociatedIcon("C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe")
    Dim picture = New System.Windows.Forms.PictureBox
    picture.Location = New System.Drawing.Size(256, 256)
    picture.Image = appIcon.ToBitmap
    picture.Left = 50
    picture.Top = 50
    Me.Controls.Add(picture)
    

    上記でできました。 (パスは XP のため違ってます)

    Me.Picture というのが何なのかわかりませんが、Left・Top を指定してないため想定外の位置に表示してたというヲチじゃないですよね?


    ひらぽん http://d.hatena.ne.jp/hilapon/
    • 回答としてマーク ハジ 2011年2月9日 6:26
    2011年2月9日 5:53
    モデレータ
  • J.Hashimotoさん>

    回答ありがとうございます。

    今使っているの方法より、簡単にアイコンが取得できそうです。

    とっても参考になりました!

    どうもありがとうございました。

     

    ひらぽんさん>

    回答ありがとうございます。

    Me.Pictureというのは、サンプルのコードに書いてたので、分からない時はそのまま使ったほうが良いと思って書いてました。

    Leftを指定して再度実行してみたら、きちんと表示されたので・・・

    想定外の位置に表示されていたのかもしれないです。。

    今度からは位置も気をつけてやりたいと思います。

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

    2011年2月9日 6:21