vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
SHGetFileInfo ohne Netzwerkverbindung 
Autor: StefanJoachimsthaler
Datum: 14.05.09 11:15

Hallo,
ich benutze die Funktion SHGetFileInfo um Icons auszulesen.
Normalerweise gebe ich einen UNC-Pfad ein. Wenn kein Netzwerk vorhanden ist,
nutze ich einen lokalen Pfad! Allerdings fliegt die Funktion bei mir komischerweise
ohne Netzwerk mit lokalem Pfad an einigen Rechnern raus. Leider kann ich nicht genau
bestimmen was der unterschied ist!

Imports System.Runtime.InteropServices
 
<Serializable()> _
Public Class IconLader
 
  <StructLayout(LayoutKind.Sequential)> _
  Public Structure SHFILEINFO
    Public hIcon As IntPtr
    Public iIcon As IntPtr
    Public dwAttributes As UInteger
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> _
    Public szDisplayName As String
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=80)> _
    Public szTypeName As String
  End Structure
 
  Private Class Win32
    Public Const SHGFI_ICON As UInteger = &H100
    Public Const SHGFI_LARGEICON As UInteger = &H0 'Large icon
    Public Const SHGFI_SMALLICON As UInteger = &H1 'Small icon
    <DllImport("shell32.dll")> _
    Public Shared Function SHGetFileInfo(ByVal pszPath As String, ByVal _
    dwFileAttributes As UInteger, ByRef psfi As SHFILEINFO, ByVal _
    cbSizeFileInfo As UInteger, ByVal uFlags As UInteger) As IntPtr
    End Function
  End Class
 
  Public Function ladeIcon32(ByVal Dateiname As String) As Drawing.Icon
    Dim shinfo As New SHFILEINFO()
    Dim hImgSmall As IntPtr = Win32.SHGetFileInfo(Dateiname, 0, shinfo, CUInt( _
      Marshal.SizeOf(shinfo)), Win32.SHGFI_ICON Or Win32.SHGFI_LARGEICON)
    Return System.Drawing.Icon.FromHandle(shinfo.hIcon)
  End Function
 
  Public Function ladeIcon16(ByVal Dateiname As String) As Drawing.Icon
    Dim shinfo As New SHFILEINFO()
    Dim hImgSmall As IntPtr = Win32.SHGetFileInfo(Dateiname, 0, shinfo, CUInt( _
      Marshal.SizeOf(shinfo)), Win32.SHGFI_ICON Or Win32.SHGFI_SMALLICON)
    Return System.Drawing.Icon.FromHandle(shinfo.hIcon)
  End Function
 
End Class
Fehlermeldung:
System.ArgumentException: Der an Icon übergebene Win32-Handle ist ungültig oder _
  hat den falschen Typ.
   bei System.Drawing.Icon..ctor(IntPtr handle, Boolean takeOwnership)
   bei System.Drawing.Icon..ctor(IntPtr handle)
   bei System.Drawing.Icon.FromHandle(IntPtr handle)
   bei Klassen.IconLader.ladeIcon16(String Dateiname) in _
     D:\Entwicklung\Software\Produkt.Interface\IconLader.vb:Zeile 39.
   bei Produkt.UserInterfaces.ctrlExplorer.DokImage(DokExDokument d) in _
   D:\Entwicklung\Software\Produkt.Interface\Auftrag\Dokument _
   Explorer\Controls\ctrlExplorer.vb:Zeile 313.

Sprache: VB.NET 4.0
Entwicklungsumgebung: VS 2010
Betriebssystem: Windows 7

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
SHGetFileInfo ohne Netzwerkverbindung2.059StefanJoachimst...14.05.09 11:15
Re: SHGetFileInfo ohne Netzwerkverbindung1.293ModeratorFZelle14.05.09 12:24
Re: SHGetFileInfo ohne Netzwerkverbindung1.274StefanJoachimst...14.05.09 12:27
Re: SHGetFileInfo ohne Netzwerkverbindung1.279ModeratorFZelle14.05.09 13:54
Re: SHGetFileInfo ohne Netzwerkverbindung1.310StefanJoachimst...14.05.09 14:02
Re: SHGetFileInfo ohne Netzwerkverbindung1.296ModeratorFZelle14.05.09 14:11

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel