Icon laden

25/01/2008 - 15:10 von Brian Schmalisch | Report spam
Hallo,

ich finde keine Möglichkeit, ein externes Icon zu laden. Ich habe es so
probiert:
this.Icon = Bitmap.FromFile(Path.Combine(Application.StartupPath,
"Web_WebConfig_green.ico"));
Funktioniert leider nicht.

Brian
 

Lesen sie die antworten

#1 Kerem Gümrükcü
25/01/2008 - 15:48 | Warnen spam
Hallo Brian,

ich finde keine Möglichkeit, ein externes Icon zu laden. Ich habe es so
probiert:
this.Icon = Bitmap.FromFile(Path.Combine(Application.StartupPath,
"Web_WebConfig_green.ico"));
Funktioniert leider nicht.



wirf mal eine "Glotzkugel" auf das Beispiel:


Image img = Image.FromFile(@"icon.ico");
this.Icon = Icon.FromHandle(((Bitmap)img).GetHicon());


Die Info stecke ich Dir auch mal gleich: Wenn Du aus einer binàren Datei das
"erste" Icon haben willst, wie z.B. aus einer Exe datei, kannst Du das
nehmen.
ich habe mit "GetIconFromExecutable" einen Wrapper um den API Aufruf
geschrieben,
der die benutzung einfach macht. Wenn kein Icon verfügbar oder bei einem
Fehler gibts einfach ne "null" zurück,...


public const uint SHGFI_ICON = 0x100;

public const uint SHGFI_LARGEICON = 0x0;

public const uint SHGFI_SMALLICON = 0x1;

[DllImport("shell32.dll")]

public static extern IntPtr SHGetFileInfo(string pszPath,

uint dwFileAttributes,

ref SHFILEINFO psfi,

uint cbSizeFileInfo,

uint uFlags);


[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;

}


public static Icon GetIconFromExecutable(string FileName) {

IntPtr hImgSmall = IntPtr.Zero;

Icon ModuleIcon = null;

SHFILEINFO shinfo = new SHFILEINFO();

hImgSmall = SHGetFileInfo(FileName, 0,

ref shinfo, (uint)Marshal.SizeOf(shinfo),

SHGFI_ICON |SHGFI_SMALLICON);

try

{

ModuleIcon = Icon.FromHandle(shinfo.hIcon);

return ModuleIcon;

}

catch (Exception)

{

return null;

}

}




Grüße

Kerem
P.S: Wo kommt dieser Name "Brian Schmalisch" eigentlich her? Ich finde
das immer interesant so was,...


Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Microsoft Live Space: http://kerem-g.spaces.live.com/
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."

Ähnliche fragen