Retrive type of file

X

Xavier Valdés

Hi all,

I'm using SHGetFileInfo api call from VB.NET so as to retreive icon
associated of a file. I want also to get "type of file" string with
SHGFI_TYPENAME flag but I can't see nothing. When I call api function and I
look for szTypeName all I get is a null string.
Any help?
Thanks a lot,
Xavier
 
H

Herfried K. Wagner [MVP]

* "Xavier Valdés said:
I'm using SHGetFileInfo api call from VB.NET so as to retreive icon
associated of a file. I want also to get "type of file" string with
SHGFI_TYPENAME flag but I can't see nothing. When I call api function and I
look for szTypeName all I get is a null string.

Quick and dirty:

\\\
Imports System.Runtime.InteropServices

Public Class Form1
Inherits System.Windows.Forms.Form

Private Declare Auto 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 IntPtr

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _
Private Structure SHFILEINFO
Public hIcon As Int32
Public iIcon As Int32
Public dwAttributes As Int32
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> _
Public szDisplayName As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=80)> _
Public szTypeName As String
End Structure

Private Const SHGFI_TYPENAME As Int32 = &H400

Private Sub Form1_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.Load
Dim x As SHFILEINFO
Call SHGetFileInfo("C:\test_tl\ausarb.tex", 0, x, Len(x), SHGFI_TYPENAME)
MsgBox(x.szTypeName)
End Sub
End Class
///
 
X

Xavier Valdés

Thank you very much!
That's perfect!

Herfried K. Wagner said:
Quick and dirty:

\\\
Imports System.Runtime.InteropServices

Public Class Form1
Inherits System.Windows.Forms.Form

Private Declare Auto 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 IntPtr

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _
Private Structure SHFILEINFO
Public hIcon As Int32
Public iIcon As Int32
Public dwAttributes As Int32
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> _
Public szDisplayName As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=80)> _
Public szTypeName As String
End Structure

Private Const SHGFI_TYPENAME As Int32 = &H400

Private Sub Form1_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.Load
Dim x As SHFILEINFO
Call SHGetFileInfo("C:\test_tl\ausarb.tex", 0, x, Len(x), SHGFI_TYPENAME)
MsgBox(x.szTypeName)
End Sub
End Class
///
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top