Permalänk

Byta en exe fils ikon C#

Hej jag håller på med ett program där jag ska kunna ändra egenskaper av filer och vill att användaren ska kunna byta den valda filens ikon. jag vill kunna byta ikon av en exe fil från c# kod men vet inte hur (Har googlat men inte hittat något)
tack på förhand

Visa signatur

Att programmera eller att inte programmera, det är frågan?

Permalänk
Medlem

Antar att du kör dotnet.
Sätta default icon:
WindowsFormApplication -> Application -> Icon.
https://msdn.microsoft.com/en-us/library/339stzf7.aspx

Permalänk
Skrivet av lassep1l1s:

Antar att du kör dotnet.
Sätta default icon:
WindowsFormApplication -> Application -> Icon.
https://msdn.microsoft.com/en-us/library/339stzf7.aspx

Nu ville TS dock veta hur man gör detta med kod.

OnT:

Icon icon = new Icon("PathToYourIcon"); this.Icon = icon;

Eller om du har lagt till likonen som en resource

this.Icon = Properties.Resources.IconName;

EDIT: Kanske missade helt TS, men vill du veta hur man ändrar en annans fil ikon?

Visa signatur
Permalänk
Medlem

Han vill inte veta hur hans applikation byter ikon, han verkar vilja veta hur man byter en annans fil ikon.

Säg notepad.exe's ikon.

Referens: "vill att användaren ska kunna byta den valda filens ikon.".

Era förslag löser problemet för hur man löser det egna projektets ikon, inte filers ikoner.

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
Felkod40

Permalänk
Avstängd

Finns andra program för just det här jobbet men inte någon kod till det.

Det här kanske är något som du söker http://anolis.codeplex.com/

Visa signatur

Server: två Intel Xeon E5-2690v2 och 128 GB ram

Min server dator: #15149189 http://i.imgur.com/BKxOmUP.jpg
zxhosting: https://www.facebook.com/pages/Zxhosting/1476037889350815

Permalänk
Avstängd
Skrivet av zxhosting:

Finns andra program för just det här jobbet men inte någon kod till det.

Det här kanske är något som du söker http://anolis.codeplex.com/

Hitta en kod som kanske funkar.

Hoppas du förstår vad koden gör den kan vara lite svår läs.

WindowsFormsApplication1.IconInjector.InjectIcon("myfile.exe", "myicon.ico", 200, 1);

// IconInjector.cs using System; using System.Runtime.InteropServices; using System.Diagnostics; namespace WindowsFormsApplication1 { /// <summary> /// IconInjectorクラスの定義 /// </summary> public class IconInjector { [DllImport("kernel32.dll", SetLastError = true)] //static extern bool UpdateResource(IntPtr hUpdate, string lpType, string lpName, ushort wLanguage, IntPtr lpData, uint cbData); static extern int UpdateResource(IntPtr hUpdate, uint lpType, uint lpName, ushort wLanguage, byte[] lpData, uint cbData); [DllImport("kernel32.dll", SetLastError = true)] static extern IntPtr BeginUpdateResource(string pFileName, [MarshalAs(UnmanagedType.Bool)]bool bDeleteExistingResources); [DllImport("kernel32.dll", SetLastError = true)] static extern bool EndUpdateResource(IntPtr hUpdate, bool fDiscard); /// <summary> /// アプリケーションのメイン エントリ ポイントです。 /// </summary> [STAThread] public static void InjectIcon(string execFileName, string iconFileName, uint iconGroupID, uint iconBaseID) { const uint RT_ICON = 3; const uint RT_GROUP_ICON = 14; // アイコンファイルの読み込み IconFile iconFile = new IconFile(); iconFile.Load(iconFileName); // リソースの更新開始 IntPtr hUpdate = BeginUpdateResource(execFileName, false); Debug.Assert(hUpdate != IntPtr.Zero); // RT_GROUP_ICON 書き込み byte[] data = iconFile.CreateIconGroupData(iconBaseID); UpdateResource(hUpdate, RT_GROUP_ICON, iconGroupID, 0, data, (uint)data.Length); // RT_ICON書き込み for (int i = 0; i < iconFile.GetImageCount(); i++) { byte[] image = iconFile.GetImageData(i); UpdateResource(hUpdate, RT_ICON, (uint)(iconBaseID + i), 0, image, (uint)image.Length); } // リソースの更新終了 EndUpdateResource(hUpdate, false); } } }

En annan http://www.codeproject.com/Articles/30644/Replacing-ICON-reso...

Visa signatur

Server: två Intel Xeon E5-2690v2 och 128 GB ram

Min server dator: #15149189 http://i.imgur.com/BKxOmUP.jpg
zxhosting: https://www.facebook.com/pages/Zxhosting/1476037889350815