Icons: C:\windows\system32\imageres.dll,-68 = 68?
lima-city → Forum → Programmiersprachen → Basic
abrufen
algorithmus
analyse
anzeige
bestimmten art
code
copyright
datei
funktion
image
index
jemand
leute
paar
positiven umwandeln
problem
schritt
sog
string
tip
-
Hi Leute,
ich habe mal ein paar Tipps befolgt und einen Algorithmus zur Analyse und Anzeige aller Dateitypen mit zugehörigen Icons erstellt. Nun habe ich das Problem, dass bei einigen der DefaultIcon-Verweisen der Index des Icons negativ ist. Jetzt habe ich den negativen Indexwert einfach durch multiplizieren mit -1 in einen positiven umgewandelt. Jetzt erscheinen aber bei einigen Dateitypen die korrekten und bei einigen Dateitypen die inkorrekten Icons.
Beispielsweise habe ich festgestellt, dass bei der oben genannten Datei imageres.dll alle neg. Einträge in positive umgewandelt werden und dann um 6 vermindert werden müssen.
Bsp: C:\windows\system32\imageres.dll,-68
--> Index: -68
--> Positiver Index: -68 * (-1) --> 68
--> korrektes Icon auf Index: 68 - 6 --> 62
Hat dafür jemand ne Erklärung?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
lccserver schrieb:
Hi Leute,
ich habe mal ein paar Tipps befolgt und einen Algorithmus zur Analyse und Anzeige aller Dateitypen mit zugehörigen Icons erstellt.
Aja, es wäre nun doch ganz hilfreich, wenn du uns deinen sog. "Algorithmus" zeigen würdest, damit
wir dir helfen können...
lccserver schrieb:
Hat dafür jemand ne Erklärung?
Ein Fehler in deinem sog. "Algorithmus"? -
Algorithmus: Unter einem Algorithmus versteht man allgemein eine genau definierte Handlungsvorschrift zur Lösung eines Problems oder einer bestimmten Art von Problemen in endlich vielen Schritten., Wikipedia
Also ist doch jede Funktion ein Algorithmus - @cbhp: tu nicht immer so groß...
Ich habe meine Lösung aber bereits selbst gefunden, ist zwar umständlicher, Funktioniert aber trotzdem. -
Algorithmus: Unter einem Algorithmus versteht man allgemein eine genau definierte Handlungsvorschrift zur Lösung eines Problems oder einer bestimmten Art von Problemen in endlich vielen Schritten., Wikipedia
Also ist doch jede Funktion ein Algorithmus - @cbhp: tu nicht immer so groß...
Ich habe meine Lösung aber bereits selbst gefunden, ist zwar umständlicher, Funktioniert aber trotzdem.
Und wie? Wäre vllt sinnvoll das zu posten, wenn jmd anderes mal fragen hat. -
So, das ist mein Algorithmus, Copyright liegt bei mir:
Imports Microsoft.Win32 Public Class Form1 Public imgList As New ImageList Private Sub GetAllIcons() Dim Key As RegistryKey = Registry.ClassesRoot Dim FileExtension As String 'Dateityp (z.B.: txt) Dim FileExtensionType As String 'Dateierläuterung (z.B.: txtfile) Dim FileExtensionIconPath As String 'Iconpfad des Dateityps Dim FileExtensionDescription As String 'Dateibeschreibung (z.B.: Textdokument) For Each Value As String In Key.GetSubKeyNames() 'Alle Unterschlüssel von HKEY_ClassesRoot ermitteln Try If Value.StartsWith(".") Then 'Dateityp (z.B.: ".txt") FileExtension = Value.Remove(0, 1) FileExtensionType = Key.OpenSubKey(Value).GetValue("") FileExtensionDescription = Key.OpenSubKey(FileExtensionType).GetValue("") FileExtensionIconPath = Key.OpenSubKey(FileExtensionType & "DefaultIcon").GetValue("") Dim IconPathArray As Array = FileExtensionIconPath.Split(",") Dim IconPath As String = IconPathArray(0) Dim IconPathIndex As Integer = IconPathArray(1) If IconPathIndex < 0 Then 'Wenn der Icon-Index negativ ist, in positiven Umwandeln IconPathIndex *= -1 End If 'folgender Schritt - siehe Erklärung: If IconPath.ToUpper() = "C:WINDOWSsystem32imageres.dll".ToUpper() Or IconPath.ToUpper() = "imageres.dll".ToUpper() Then IconPathIndex -= 6 'Bei einem Index dieser Datei den Icon-Index um 6 vermindern ElseIf IconPath.ToUpper() = "C:WINDOWSsystem32shell32.dll".ToUpper() Or IconPath.ToUpper() = "shell32.dll".ToUpper() Then IconPathIndex -= 82 'Bei einem Index dieser Datei den Icon-Index um 82 vermindern End If Dim Icon As Icon = Icon.FromHandle(ExtractIcon(Me.Handle, IconPath, IconPathIndex)) 'Icon extrahieren imgList.Images.Add(FileExtension, Icon) IconDescriptions.Add(FileExtensionDescription) 'Beschreibung zu einer ArrayList hinzufügen und per imgList.Images.IndexOfKey(FileExtension) abrufen End If Catch err As Exception 'Wenn ein Schlüssel nicht existiert - ignorieren End Try Next End Sub End Class
Erklärung:
Ich habe wie bereits oben beschrieben festgestellt, dass man den Index der Icons teilweise verschieben muss, habe aber nicht feststellen können, woran das liegt.
Ihr dürft diesen gern verwenden - bei mir Funktioniert er so einwandfrei. Aber wie gesagt - mein Copyright.
Beitrag geändert: 21.8.2008 17:55:14 von lccserver -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage