Frage

Ich habe den Pfadnamen ein .exe-Datei.

Wie finde ich den Pfad zu der Symboldatei, die von windows verwendet werden, wenn diese Datei wurden fallen gelassen auf dem desktop?(Ich möchte dieses Symbol angezeigt wird, in meinem eigenen Programm.)

Ich muss in der Lage sein zu finden die Symbol über mein C# - Programm zur Laufzeit.

Mit C# in Visual Studio 2008.

War es hilfreich?

Lösung

Wenn Sie gefunden werden diesen Code Online vor einer Weile zu tun, dass:

class Win32
{
    public const uint SHGFI_ICON = 0x100;
    public const uint SHGFI_LARGEICON = 0x0; // 'Large icon
    public const uint SHGFI_SMALLICON = 0x1; // 'Small icon

    [DllImport("shell32.dll")]
    public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);

    public static Bitmap GetFileIcon(string fName)
    {
        IntPtr hImgSmall; //the handle to the system image list
        SHFILEINFO shinfo = new SHFILEINFO();
        hImgSmall = Win32.SHGetFileInfo(fName, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), Win32.SHGFI_ICON | Win32.SHGFI_SMALLICON);
        return Icon.FromHandle(shinfo.hIcon).ToBitmap();
    }
}


[StructLayout(LayoutKind.Sequential)]
public struct SHFILEINFO
{
    public IntPtr hIcon;
    public IntPtr iIcon;
    public uint dwAttributes;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
    public string szDisplayName;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
    public string szTypeName;
};

Sie müssen

using System.Drawing;
using System.Runtime.InteropServices;

alle die entsprechenden Klassen verweisen

Andere Tipps

Das Standard-icon derjenige sein würde, der eingebettet in die exe-Datei mit dem index 0.

Suchen in:Projekt Eigenschaften - > Registerkarte Anwendung > Symbol.

Dieser Artikel Codeproject den Job ziemlich gut zu tun scheint. Es bietet eine IconExtractor Klasse, die alle die Win32-API-Material für Sie in eine schöne verwaltete Schnittstelle kapselt.

Sie können als solche verwendet werden:

using TKageyu.Utils;

...

using (IconExtractor ie = new IconExtractor(@"D:\sample.exe")) 
{
    Icon icon0 = ie.GetIcon(0);
    Icon icon1 = ie.GetIcon(1);

    ...

    Icon[] splitIcons = IconExtractor.SplitIcon(icon0);

    ...
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top