Hoppa till innehåll

Extrahera Ikon Ifrån Fil (Pe,mapp,fil) C# Källkod


araschic
 Dela

Rekommendera inlägg

Väldigt enkelt program som extrahera ikon ifrån vald fil, funkar på det mesta.
Till exempel musik filer,bilder,program osv.

 

Nedladdning (källkod endast även bifogat i tråden):https://mega.co.nz/#!AoZkEIJQ!ABRqgx24XUihoxvAwjatKnos_jRC0e1dvOKtnKNZPh8

 

Besök gärna min blogg om ni har intresse av det
http://araschic.myshowroom.se

Här har ni ett snippet för dom som har intresse av det, lite stökig stil hoppas det duger ändå.
 

        //The might .dll shell32 behold !
        [DllImport("Shell32.dll")]
        public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, int cbFileInfo, uint uFlags);
        // Constants that we need in the function call
        private const int SHGFI_ICON = 0x100;
        private const int SHGFI_SMALLICON = 0x1;
        private const int SHGFI_LARGEICON = 0x0;
        
        // This structure will contain information about the file
        public struct SHFILEINFO
        {
            // Handle to the icon representing the file
            public IntPtr hIcon;
            // Index of the icon within the image list
            public int iIcon;
            // Various attributes of the file
            public uint dwAttributes;
            // Path to the file
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
            public string szDisplayName;
            // File type
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
            public string szTypeName;
        };
        //Sample Usage, not (to) advanced ? =)
          private void DrawIcon(string strFilePath)
        {
           //Store the 'Icon' 
            Icon myIcon;
            //Large icon
            IntPtr hImgLarge;
            //;) fancy shit
            SHFILEINFO shinfo = new SHFILEINFO();

            ///////////////////////////////
            //DRAW THE LARGE ICON
            ///////////////////////////////
            //Get handle
            hImgLarge = SHGetFileInfo(txtFilePath.Text, 0, ref shinfo, Marshal.SizeOf(shinfo), SHGFI_ICON | SHGFI_LARGEICON);
            //myIcon equal icon from file
            myIcon = Icon.FromHandle(shinfo.hIcon);
            //Draw icon inside picture box
            picLarge.Image = myIcon.ToBitmap();
            //Clean up and jump out 
            GC.Collect();
        }
        
        

ExtractIconFromPE.zip

Redigerat av araschic
Länk till kommentar
Dela på andra sajter

Stödjer inte Linux.

Jo bör funka har du Mono ? så skall det inte vara några problem :$ hoppas jag...

 

*Eventuellt att det inte funkar efter som jag använder Windows API, lite osäker på mono ibland funkar pinvoke ibland inte liksom :P.

Redigerat av araschic
Länk till kommentar
Dela på andra sajter

Har inte riktigt koll på Linux. Men Linuxprogram använder sig inte av ikoner på det sättet vad jag vet utan för att få en ikon använder man sig utav .desktop-filer som innehåller text med info såsom just sökväg till ikonen och vilket kommando som ska köras.

 

Så ett program som extraherar ikoner från ett program kan liksom inte finnas till Linux.

Länk till kommentar
Dela på andra sajter

Har inte riktigt koll på Linux. Men Linuxprogram använder sig inte av ikoner på det sättet vad jag vet utan för att få en ikon använder man sig utav .desktop-filer som innehåller text med info såsom just sökväg till ikonen och vilket kommando som ska köras.

 

Så ett program som extraherar ikoner från ett program kan liksom inte finnas till Linux.

Okej mycket möjligt inte så inne på Linux, håller mig till Windows.  

Men tack för din synpunkt

 

Teoretiskt sätt så borde det funka ändå...  då även till exempel en java applet innehåller en ikon,

som ligger som resource ... men ej säker

Redigerat av araschic
Länk till kommentar
Dela på andra sajter

Ja det är klart att program kan innehåller bilder som ikoner, men det finns ingen standard i hur de visas på skrivbordet eller i filbläddrare vad jag vet.

 

Detta programmet går säkert att köra i Linux med wine/mono och då få ut ikoner från körbara windowsfiler.

Länk till kommentar
Dela på andra sajter

Ja det är klart att program kan innehåller bilder som ikoner, men det finns ingen standard i hur de visas på skrivbordet eller i filbläddrare vad jag vet.

 

Detta programmet går säkert att köra i Linux med wine/mono och då få ut ikoner från körbara windowsfiler.

Jag menar att i Windows så ligger Ikonen till ett program sparat som en resurs, och det är en gemensam standard.

Det samma borde finnas på Linux, Any way :D stay tuned for more releases...

 

Länk till kommentar
Dela på andra sajter

Nej, det finns ingen sån standard i Linux. Motsvarande "genvägar" till program har en standard för ikoner men inte den körbara filen själv.

That's it nu går du mig på nerverna, jag menade att det var gemensam standard för windows (där av att jag kan använda en win api via pinvoke). Linux har visst ikoner för program etc http://qt-project.org/doc/qt-4.8/appicon.html.

Gäller även en java applet på till exempel linux, eller ett program eller varför i helvete skulle du annars till exempel se firefox ikonen på desktop i kunbuntu till exempel..

 

/0ver and out

Länk till kommentar
Dela på andra sajter

Firefoxikonen på skrivbordet är en genväg, den finns inte i programmet. Länken du skickade var för ikonen som visas per fönster för startade program. "The application icon, typically displayed in the top-left corner of an application's top-level windows"

Länk till kommentar
Dela på andra sajter

Gå med i konversationen

Du kan skriva nu och registrera dig senare. Om du har ett konto, logga in nu för att posta med ditt konto.

Gäst
Svara på det här ämnet...

×   Klistrade in som rich text.   Klistra in som vanlig text istället

  Endast 75 emojis är tillåtet.

×   Din länk har automatiskt inbäddats.   Visa som en länk istället

×   Ditt tidigare innehåll har återställts.   Rensa redigeraren

×   Du kan inte klistra in bilder direkt. Ladda upp eller infoga bilder från URL.

 Dela

×
  • Skapa ny...