Icon aus Datei Extrahieren -> FTP

  • VB.NET

Es gibt 62 Antworten in diesem Thema. Der letzte Beitrag () ist von ~blaze~.

    Icon aus Datei Extrahieren -> FTP

    Hallo zusammen,
    es gibt ja die Möglichkeit ein Icon aus einer Datei zu Extrahieren.

    Aber wie hole ich das Icon einer Datei die auf dem FTP liegt ?
    Ohne Download !

    Wo fange ich an zu suchen ?
    Habt ihr einen Tip ?

    vielen dank
    Bernd

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Bernd“ ()

    Schwer.
    Die Datei muss ja geöffnet werden, und dazu wird eine lokale Kopie auf den Computer geholt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Da gibt es mehrere Moeglichkeiten.

    Zum einen koenntest das Programm eine Liste von Dateierweiterungen mitsamt deren Icons bereitstellen, und zum anderen koenntest du nur den Header der Datei herunterladen und diesen dann auswerten. Allerdings funktioniert letzteres bei weitem nicht bei allen Dateitypen, die die meisten ihr Icon nicht in den Dateien speichern.

    Ich persoenlich wuerde auf die Iconliste setzen.

    Falls du nur irgendein Icon meinst, das sich in der Datei befindet, koenntest du versuchen, eben nur dieses herunterzuladen. Allerdings wuerdest du dafuer die genaue Position und die genaue Groesse des Icons wissen muessen. Des Weiteren bin ich mir nicht sicher, ob FTP den Download von Teilen einer Datei ueberhaupt unterstützt.

    RodFromGermany schrieb:

    Die Datei muss ja geöffnet werden

    genau das dauert mir zu lange. alles Downloaden, auslesen, löschen......
    also schei... Idee von mir.

    haiyyu schrieb:

    ob FTP den Download von Teilen einer Datei ueberhaupt unterstützt.

    ich auch nicht.

    haiyyu schrieb:

    eine Liste von Dateierweiterungen mitsamt deren Icons bereitstellen

    genau das werde ich machen.

    Hey,
    ich danke euch beiden vielmals. Da währe ich nicht drauf gekommen.

    Bernd
    @Bernd: überlege mal, wie willst du ein apfel essen ohne vorher ihm von baum runter zu holen.
    Ich würde datei runter saugen dann kannst damit anstellen was du willst....sorry, aber irgend wie dein vorhaben, klingt für mich absolut unlogisch.
    Ja klar unlogisch, wenn man nicht weis.....

    Ich bastel mir gerade ein Control,
    genauer gesagt eine TreeView. Die mir Verzeichnisse und Dateien auf dem FTP Server anzeigt.
    Nur sieht ein TV immer so blöd aus, wenn dort keine Bildchen drin sind.
    Bilder von Folder oder Files wie z.B. PDF, FLV, WMF, Txt...........

    So, nu dachte ich mir, les doch die Icon aus, wenn welche vorhanden sind.
    Dann wird doch das TreeView schön bunt und übersichtlich.

    Aber das auslesen der Icon geht nur bei Lokalen Dateien.

    Jetzt bastel ich mir eine ImageListe mit Icon. Die braucht nicht viel platz in der DLL.
    Dort bestücke ich mein TV kommplett. Threading.... schicke dann komplett an die MainForm() zurück.

    Wenn ich aber erst alle Dateien downloaden soll um die Blöden Bildchen dort raus zu holen, geht mir bei jedem Klick viel Zeit verloren. Vor allem der Datenmüll, erst Downloaden dann löschen. Und wehe der Zugriff ist mal verweigert oder so.

    nö nö, lieber ne ImageListe

    aber danke dir, das du dir deshalb den Kopf zerbrichst.
    Hi
    Die Informationen für die Icons der Extensions stehen in der Registry im HKEY_CLASSES_ROOT-Schlüssel. Wenn du dir die im regedit ansiehst, stellst du fest, dass der Standard-Wert des Schlüssels immer auf ein anderes Element in HKEY_CLASSES_ROOT verweist. Dieses kann einen DefaultIcon-Schlüssel enthalten, der wiederum die Daten über das Icon als Wert enthält. Allerdings musst du die Information erst umwandeln. Zum Beispiel gibts Schlüssel, die %1, %SystemRoot%, "R:\path\file.exe", 1 heißen. Wenn ich alle Möglichkeiten kennen würde, würde ich dir eine Funktion dafür schreiben. Es gibt auch schon eine Alternative in der WinApi, aber ich weiß gerade nicht mehr, wie das hieß. Problematisch ist vor allem %1, da du ja keine lokalen Pfade hast.

    Gruß
    ~blaze~
    Naja. Wieso. Es ist doch eigentlich ganz simpel. Er könnte eigentlich nur die Endungen der Dateien auslesen und das TV-Icon ordnet dann jeder Endung das passende Icon hinzu, welche meines Wissens nach ja irgendwo under C:\Windows\ sein dürften. Oder nicht?

    Gruß
    Die standart Symbole die Windows verwendet stehen glaube ich in der Shell32.
    Die kann ich ja als erstes auslesen. Dann habe ich zumindest schonmal die Sysmbole von Windows.
    Kann aber auch sein das ich mich da Irre. Ich schau mir die Shell32 mal genauer an. Veileicht sind das aber auch nur die Sysmbole aus den Menüleisten bzw. Contextmenüs.

    blaze,
    ich versuche mal Regedit was zu finden.

    melde mich dann wieder

    danke

    Bernd

    bohhh mannn ehhhhh ~blaze~
    vergiss es. ich habe da mal reingeschaut. ich habe nur eine alte XP Gurke mit kaum was drauf Installiert, sonst läuft das dinge ja nicht.
    Es sind nur da Einträge wo auch ein Programm mal gearbeitet hat (Installiert) . Bei den anderen sind keine Einträge.

    Mäglichkeiten !?

    XP
    Vista
    Win7
    Win8

    Programme

    Installiert
    nicht Installiert

    Ich glaube da habe ich keine Nerven zu. Alle Möglichkeiten durch zu spielen.

    Aber Trotzdem danke für dein Angebot. Das weis ich zu schätzen.


    Bernd

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Bernd“ ()

    SystemUnknow schrieb:

    Wie wärs wenn du Dateien per WebRequest Rekursiv ausliest:
    social.msdn.microsoft.com/Forums/…6e-2a064fe5a59a

    Na du bis aber schnuffig. Klar kenne ich meine eigene Einträge. Lustig.

    SystemUnknow schrieb:

    wenn du Dateiename und Pfad ermittelt hast, dann Icon extrahieren.

    Lokal kein Thema, aber via FTP ohne download. Genua das ist die Frage.

    Sinlyu schrieb:

    Ich habe jetzt nicht alles gelesen

    dann tu das bitte.

    danke Jungs

    Bernd
    wir reden glaube ich aneinander vorbei.
    Ob ich die Daten Rekursive oder nicht auslese.
    Ich habe eine List(Of...) mit den Files bzw. Folder.
    Nun muss ich anhand der Endung (exe. gif. wav...) entscheiden welches Icon in der TreeView verwendet wird.
    1. Möglichkeit
    - zuweisung eines Icon mittels Endung der Datei. woher dann auch immer die Icons kommen.
    Lokal, Internet, .....

    2. Möglichleit
    - das direkte auslesen eines Icon aus der Datei. wenn vorhanden
    dazu muss die Datei geöffnet werden.
    das Problem lässt sich aber nur lokal lösen.
    es sei denn es gibt einen Weg, den ich ja suche....

    Ich habe mindestens 25 - 30 sinnvolle Seiten abgeklappert. Keiner hat auch nur davon gesprochen das es geht.
    Ich habe insgesamt 14 Tage und Hunderte von Seiten recherchiert. Bisher nicht gefunden.

    ich hoffe wir Reden nun in Klartext und nicht aneinander vorbei.

    vielen dank dass du dich so weiter bemühst

    Bernd
    Hallo System,

    VB.NET-Quellcode

    1. Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
    2. Dim Return_Bitmap As Bitmap = Nothing
    3. Dim hIcon As Icon = System.Drawing.Icon.ExtractAssociatedIcon("ftp://***/clown.gif")
    4. If hIcon IsNot Nothing Then
    5. PictureBox1.Image = hIcon.ToBitmap()
    6. Else
    7. MessageBox.Show("kein Bild")
    8. End If
    9. End Sub


    Spätestens bei der Passwort und User abfrage kann diese Funktion nicht mehr durch kommen.

    FTP

    auch www geht nicht
    Also wenn ich versuchen würde ein Icon zu extrahieren ohne Download, dann würde ich mich informieren, an welcher Stelle einer Datei das Icon steht. Steht es ziemlich am Anfang einer Datei, dann würde ich versuchen z.B. nur die ersten 1000 Bytes der Datei herunter zu laden und dort heraus das Icon zu extahieren. Problematisch würde es werden wenn es nicht definiert an einer bestimmten Stelle oder immer weit hinten steht. Aber du kannst ja mal versuchen dies herauszufinden, denn eine andere Möglichkeit gäbe es hier nicht.

    Außer du hast die Möglichkeit eigenes Programm auf dem Server auszuführen, welches das Icon extrahiert und dann an dich zurück schickt.
    Dodo, das Problem ist, dass die meisten Dateien ihre Icons nicht in sich selbst speichern.
    Meist wird das nur von Programmen, die mit den entsprechenden Formaten umgehen können, der jeweiligen Dateiendung zugewiesen.
    Anders bei .exe-Dateien, bei ihnen liegt das Icon direkt in der Datei selbst. Es gibt API-Funktionen, die es einem ermöglichen, das Icon zu extrahieren.
    Das wird Bernd jedoch nicht viel bringen, da sich die Dateien in seinem Fall auf einem Server und nicht auf seinem lokalen Rechner befinden.
    Meine Suche nach dem Header einer .exe-Datei brachte leider keinen Erfolg zum Thema Icon zum Vorschein, auch alles andere benutzte nur eine WinAPI-Funktion zum Extrahieren des Icons.
    Was man wissen müsste, ist, wie diese Funktion arbeitet, so dass man sie nachbauen könnte.

    Für Dateien, die das Icon nicht speichern, kann man das Icon ganz einfach aus der Registry auslesen, wie Blaze ja glaube ich in diesem Thema schon erwähnte.

    Bernd schrieb:

    Ich bastel mir gerade ein Control,
    genauer gesagt eine TreeView. Die mir Verzeichnisse und Dateien auf dem FTP Server anzeigt.
    Nur sieht ein TV immer so blöd aus, wenn dort keine Bildchen drin sind.
    Bilder von Folder oder Files wie z.B. PDF, FLV, WMF, Txt...........



    und nur darum geht es sich. Das TreeView darf nicht langweilig aussehen.
    bzw. man sollte erkennen ob es eine Datei oder ein Ordner ist .

    Wenn ich nun auf einen Server gerate der tausende von Dateien hat...
    dann halte ich das System am arbeiten. Macht also keinen Sinn.

    Ich nehme die Lösung von haiyyu.

    Image List mit den bekanntesten Icon erstellen und anhand der Endung selectieren.
    Ein Bildchen für unbekannte Dateien.

    ich möchte ja eine nicht langweilige Ansicht und keinen Ofen bauen !

    Danke an alle für die Rege Teilnahme