簡體   English   中英

在運行時更改外部 exe 圖標

[英]Changing external exe icon at runtime

我正在開發一個簡單的應用程序,它應該簡單地復制另一個現有的可執行文件並更改它的圖標 這可以用 .NET 實現嗎? 我問的是圖標更改,復制不是問題。

我不知道如何以及從哪里開始。 我在谷歌上搜索過,但只找到了我不太熟悉的非托管 C++ 代碼。

這篇文章與在運行時更改當前應用程序的圖標無關,而是關於更改外部應用程序的圖標(在 Windows 資源管理器中可見)。

任何幫助,將不勝感激。

謝謝。

.NET 對此不提供任何支持。 該圖標存儲在嵌入在 .exe 中的非托管資源中。 您可以使用 File + Open + File 查看它們,選擇 .exe 並打開 Icons 節點。 編號最小的圖標是 Windows 使用的圖標。

更新這些資源通常需要重建 .exe。 幸運的是,Windows API 支持即時更新資源。 它有限制,但這不應該影響你的圖標。 您將需要 BeginUpdateResource、UpdateResource 和 EndUpdateResource。 注意它們並不好用,你需要知道圖標資源編號。 訪問 pinvoke.net 以獲取您需要的聲明。

我制作了一個 .NET 庫,用於在 PE 文件Ressy 中讀取和寫入資源。 它支持對資源的低級和高級操作。

例如,以下是更改圖標的方法:

using Ressy;
using Ressy.HighLevel.Icons;

var portableExecutable = new PortableExecutable("myprogram.exe");
portableExecutable.RemoveIcon();
portableExecutable.SetIcon("new_icon.ico");

假設您使用的是 Visual Studio/Visual C# Express Edition。

為此,請嘗試轉到“項目”>“您的應用程序屬性”。 在應用程序選項卡上,將圖標下拉框更改為您喜歡的任何圖標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM