任何人都可以顯示簡短的代碼片段嗎?它應該以.exe的名稱作爲輸入並輸出.ico文件。越短越好,請不要推薦任何二進制文件。這似乎是這樣一個簡單的任務,但我發現的唯一代碼看起來非常臃腫。謝謝!從.exe提取圖標的簡單代碼
1
A
回答
4
雖然聽起來很簡單,但實際上它與Win32中的大部分內容一樣,並不是微不足道的。特別是這個代碼庫的整個部分感覺真的非常老了......操縱它是一個極大的痛苦。加重這一點的是,每個文件有多個圖標大小,以及每個文件每個大小有多個圖標。
這裏有一些舊代碼,它可以完成很多你需要的東西(但不是全部)。
一些設置:
static const int _MAX_ICONS = 2;
typedef struct INTERNAL_ICON_INFO
{
HICON hIcon;
int nSize;
} INTERNAL_ICON_INFO;
typedef struct TAG_ICON_BUNDLE_DETAILS
{
int nLargeIcons;
INTERNAL_ICON_INFO aiiLargeIcons[_MAX_ICONS];
int nSmallIcons;
INTERNAL_ICON_INFO aiiSmallIcons[_MAX_ICONS];
} ICON_BUNDLE_DETAILS;
的圖標提取碼:
HINSTANCE hTargetModule = LoadLibrary((LPCTSTR)stTargetFile);
if (NULL != hTargetModule)
{
int nIconCount = ExtractIconEx((LPCTSTR)stTargetFile, -1, NULL, NULL, 0); // get total icon count
ICON_BUNDLE_DETAILS* priiArray = new ICON_BUNDLE_DETAILS[nIconCount];
int nExtracted = 0;
for (int i = 0; i < nIconCount; i++)
{
HICON* phiLargeIcons = new HICON[nIconCount];
HICON* phiSmallIcons = new HICON[nIconCount];
nExtracted = ExtractIconEx((LPCTSTR)stTargetFile, i, phiLargeIcons, phiSmallIcons, _MAX_ICONS);
for (int j = 0; j < nExtracted; j++)
{
ICONINFO ii;
GetIconInfo(phiLargeIcons[j], &ii);
priiArray[i].nLargeIcons = nExtracted;
priiArray[i].aiiLargeIcons[j].hIcon = phiLargeIcons[j];
priiArray[i].aiiLargeIcons[j].nSize = sizeof(ICONINFO);
}
for (j = 0; j < nExtracted; j++)
{
priiArray[i].nSmallIcons = nExtracted;
priiArray[i].aiiSmallIcons[j].hIcon = phiSmallIcons[j];
priiArray[i].aiiSmallIcons[j].nSize = sizeof(ICONINFO);
}
}
if (nExtracted > 0)
{
// process extracted icons
}
}
總之,這段代碼這應該由開裂EXE和讓你在圖標本身讓你對你的方式打開目標文件,統計其中有多少圖標,然後獲取有關每個ICONINFO每個實例的信息。這是我認爲你關心的結構,因爲它包含位圖本身。
從ICONINFO到新的.ico文件不是我們需要做的事情,所以我無法幫助那部分...但它有多難? ;-)
祝你好運!
0
我發現這一點:
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
Me.Icon = Icon.ExtractAssociatedIcon(My.Application.Info.DirectoryPath
& "\" & My.Application.Info.AssemblyName & ".exe")
End Sub
相關問題
- 1. 從.exe提取C#代碼
- 2. 從源代碼中提取共享密碼有多簡單
- 3. 簡單的html DOM從腳本jwplayer代碼獲取圖像
- 4. 在Ubuntu Linux中提取EXE圖標
- 5. 從EXE中提取所有圖標而不使用ExtractIconEx
- 6. 使用簡單的java代碼提取css屬性值
- 7. 從EXE中提取文件
- 8. 用WiX代替exe圖標
- 9. 從java代碼運行exe
- 10. 從cgal提取代碼
- 11. 從APK提取源代碼
- 12. 簡單的uml圖到java代碼
- 13. 簡單代碼,但遊標仍然從內容提供者返回空值
- 14. VBA簡單代碼
- 15. Php簡單代碼
- 16. 運行簡單代碼時獲取java.lang.NoSuchMethodError
- 17. 簡單的代碼來從網絡獲取SSID
- 18. 簡單的數字提取
- 19. 簡單的regex提取
- 20. 如何從簡單的html-dom網站提取圖像?
- 21. 從Zookeeper提取簡單配置
- 22. 從URL(簡單)提取資料Tweet ID
- 23. 與簡單的print_r()代碼
- 24. 非常簡單的代碼
- 25. 執行簡單的代碼
- 26. 簡單的代碼(jQuery)
- 27. 簡單的RSA代碼
- 28. 簡單的PHP代碼...?
- 29. 簡單的代碼優化
- 30. 簡單的拆分代碼
語言/技術? – Noldorin 2009-08-28 22:49:56
任何語言。只是尋找有效的東西。 :) – Lin 2009-08-29 07:56:16