Immer icons von Laufwerken und Verzeichnissen: - Symbol.ExtractAssociatedIcon ("filePath") funktioniert nicht?
Wenn Icon.ExtractAssociatedIcon(filePath)
ist der einzige Weg zu bekommen Symbole .NET && wenn es nicht funktioniert für Laufwerke und Verzeichnisse (tut es das?) dann, wie gehen Sie darum, die Symbole für Sie?
In anderen Worten, ich möchte
foreach (string driveName in Directory.GetLogicalDrives())
//if (System.IO.Directory.Exists(driveName))
{
using (System.Drawing.Icon systemIcon = System.Drawing.Icon.ExtractAssociatedIcon(driveName))
{ ... }
}
^ dies offensichtlich nicht funktioniert (funktioniert nur für Dateien)
Ich bin mir nicht sicher System.IO.Directory.Exists(file)
ist der richtige Weg für die Erkennung, ob Laufwerke vorhanden sind...
Nach der verlinkte Frage, aber es funktioniert nicht auf vernetzt Dateien, Verzeichnisse etc. Wollen Sie NICHT ein pInvoking Lösung?? Auch, warum sollten Sie überprüfen, ob eine Datei vorhanden, wenn .net aufgeführt hat es für Sie?
sorry, alles bis auf die foreach-war eine Klasse für sich, und wenn wurde für die Sicherheit. Auch, ich will ein pInvoking Lösung. 🙂
Whoopsies, löschte ich meine Antwort (Da war es falsch). Ich denke, @Hajbans Antwort sollte richtig sein.
sorry, alles bis auf die foreach-war eine Klasse für sich, und wenn wurde für die Sicherheit. Auch, ich will ein pInvoking Lösung. 🙂
Whoopsies, löschte ich meine Antwort (Da war es falsch). Ich denke, @Hajbans Antwort sollte richtig sein.
InformationsquelleAutor Spectraljump | 2011-04-02
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dazu aus .NET-Anwendung, müssen Sie P/Invoke die
SHGetFileInfo
- Funktion aus der Windows-API (definiert inshell32.dll
).Ist hier einige Beispiel-code zeigt, wie dies zu tun: Erste Zugeordneten Symbole Mit C#
Es ist nicht "so hart". Es ist gar nicht schwer. Die Windows-API bietet eine Funktion, die explizit für diesen Zweck, alles, was Sie tun müssen, ist anrufen. Nun, wenn deine Frage ist, "warum ist das nicht bereitgestellte Funktionalität von der .NET Framework", das ist eine andere Frage zusammen. Nicht alles in der Win32-API ist neu in verwaltetem code implementiert. Nicht nur wäre das ein wahnsinniges Unterfangen, aber es ist einfach nicht sinnvoll, dass. Funktionen wie diese sind relativ selten verwendet .NET-Anwendungen, und wenn Sie Sie benötigen, können Sie einfach die P/Invoke. P/Invoke ist es Vorder Grund; es war kein Unfall.
Dank Gary. Je mehr Sie wissen...!
Und denken Sie daran, das Symbol zerstört, msdn.microsoft.com/en-us/library/...
InformationsquelleAutor HABJAN