第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果有其它的簡單實現(xiàn)方法也可以寫出來,大家?guī)蛶兔?/h1>

很簡單,我要實現(xiàn)修改EXE文件圖標的功能,須要用于如下函數(shù)。BeginUpdateResourceUpdateResourceEndUpdateResource其中UpdateResource我不會用。函數(shù)原型如下。-----------------------------函數(shù)功能:該函數(shù)增加,刪除,或替代某可執(zhí)行文件中的資源。函數(shù)原型:BOOL UPdateResource(HANDLE hUpdate,LPCTSTR lPTyPe,LPCTSTR IPName,WORD wLanguage,LPVOID lgData,DWORD cbData);參數(shù):hUpdate:指定更新文件句柄。此句柄由BeginUpdateResource函數(shù)返回。lpType:指向說明將被更新的資源類型的字符串,它以NULL為終止符。這個參數(shù)可以是一個通過宏MAKENTRESOURCE傳遞的整數(shù)值,含義參見EnumResLangProc\lpType。lpName:指向說明待被更新的資源名稱的字符串,它以NULL為終止符。這個參數(shù)可以是一個通過宏MAKEINTRESOURCE傳遞的整數(shù)值。wLanguage:指定將被更新資源的語言標識。要了解基本的語言標識符以及由這些標識符組成的字語言標識符的列表,可參見宏MAKELANGID。lpData:指向被插入可執(zhí)行文件的資源數(shù)據(jù)的指針。如果資源是預定義類型值之一,那么數(shù)據(jù)必須是有效且適當排列的。注意這是存儲在可執(zhí)行文件中原始的一進制數(shù)據(jù),而不是由Loadlcon,LoadString或其他裝載特殊資源函數(shù)提供的數(shù)據(jù)。所有包含字符串、文本的數(shù)據(jù)必須是Unicode格式;IpData不能指向ANSI數(shù)據(jù)。如果lpData為NULL,所指定的資源將從可執(zhí)行文件中被刪除。cbData:指定lpData中的資源數(shù)據(jù)數(shù)據(jù)大小,以字節(jié)計數(shù)。返回值:如果函數(shù)運行成功,返回值為非零;如果函數(shù)運行失敗,返回值為零。若想獲得更多的錯誤信息,請調(diào)用GetLastError函數(shù)。注意:應用程序重復使用UpdateResource去改變資源數(shù)據(jù)。每次UpdateResource調(diào)用都要占用系統(tǒng)內(nèi)部的一個增加、刪除、替代的列表,而實際上并沒有將數(shù)據(jù)寫到可執(zhí)行文件中。應用程序必須通過使用EndUpdateResource函數(shù)將每次積累的變化寫入可執(zhí)行文件中。------------------------------這是C的函數(shù)原型,在C#中用什么表示呀?請大家給我寫出完整代碼(從打開到寫入完成),在此先謝過啦!
查看完整描述

2 回答

?
慕雪6442864

TA貢獻1812條經(jīng)驗 獲得超5個贊

建一個Win32函數(shù)的工具類如下:  
public static class Win32Api
{
[DllImport("kernel32.dll", SetLastError = true)]
public static extern IntPtr BeginUpdateResource(string pFileName, [MarshalAs(UnmanagedType.Bool)]bool bDeleteExistingResources);

[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool UpdateResource(IntPtr hUpdate, string lpType, string lpName, ushort wLanguage, IntPtr lpData, uint cbData);

[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool EndUpdateResource(IntPtr hUpdate, bool fDiscard);
}

然后像C#方法一樣調(diào)用就行了。
比如:(示意代碼,未驗證)

string fileName = @"XXX\XXX.xxx";
// 獲得資源句柄
IntPtr hResource = Win32Api.BeginUpdateResource(fileName, false);
if (hResource.ToInt32() == 0) {
throw new Win32Exception(Marshal.GetLastWin32Error());
}
string fileToUpdate = @"YYY\YYY.yyy";
// 累積更新
if (Win32Api.UpdateResource(hResource, "FILE", fileToUpdate, 0, null, 0) == false) {
throw new Win32Exception(Marshal.GetLastWin32Error());
}
}
// 寫入更新
if (Win32Api.EndUpdateResource(hResource, false) == false) {
throw new Win32Exception(Marshal.GetLastWin32Error());
}


查看完整回答
反對 回復 2023-01-15
?
浮云間

TA貢獻1829條經(jīng)驗 獲得超4個贊

簡單,我要實現(xiàn)修改EXE文件圖標的功能,須要用于如下函數(shù)。 
BeginUpdateResource 
UpdateResource 
EndUpdateResource 

其中UpdateResource我不會用。函數(shù)原型如下。 
----------------------------- 
函數(shù)功能:該函數(shù)增加,刪除,或替代某可執(zhí)行文件中的資源。 

函數(shù)原型:BOOL UPdateResource(HANDLE hUpdate,LPCTSTR lPTyPe,LPCTSTR IPName,WORD wLanguage,LPVOID lgData,DWORD cbData); 

參數(shù): 

hUpdate:指定更新文件句柄。此句柄由BeginUpdateResource函數(shù)返回。 

lpType:指向說明將被更新的資源類型的字符串,它以NULL為終止符。這個參數(shù)可以是一個通過宏MAKENTRESOURCE傳遞的整數(shù)值,含義參見EnumResLangProc\lpType。 

lpName:指向說明待被更新的資源名稱的字符串,它以NULL為終止符。這個參數(shù)可以是一個通過宏MAKEINTRESOURCE傳遞的整數(shù)值。 

wLanguage:指定將被更新資源的語言標識。要了解基本的語言標識符以及由這些標識符組成的字語言標識符的列表,可參見宏MAKELANGID。 

lpData:指向被插入可執(zhí)行文件的資源數(shù)據(jù)的指針。如果資源是預定義類型值之一,那么數(shù)據(jù)必須是有效且適當排列的。注意這是存儲在可執(zhí)行文件中原始的一進制數(shù)據(jù),而不是由Loadlcon,LoadString或其他裝載特殊資源函數(shù)提供的數(shù)據(jù)。所有包含字符串、文本的數(shù)據(jù)必須是Unicode格式;IpData不能指向ANSI數(shù)據(jù)。 

如果lpData為NULL,所指定的資源將從可執(zhí)行文件中被刪除。 

cbData:指定lpData中的資源數(shù)據(jù)數(shù)據(jù)大小,以字節(jié)計數(shù)。 

返回值:如果函數(shù)運行成功,返回值為非零;如果函數(shù)運行失敗,返回值為零。若想獲得更多的錯誤信息,請調(diào)用GetLastError函數(shù)。 

注意:應用程序重復使用UpdateResource去改變資源數(shù)據(jù)。每次UpdateResource調(diào)用都要占用系統(tǒng)內(nèi)部的一個增加、刪除、替代的列表,而實際上并沒有將數(shù)據(jù)寫到可執(zhí)行文件中。應用程序必須通過使用EndUpdateResource函數(shù)將每次積累的變化寫入可執(zhí)行文件中。 
------------------------------ 
這是C的函數(shù)原型,在C#中用什么表示呀? 
請大家給我寫出完整代碼(從打開到寫入完成),在此先謝過啦! 

如果有其它的簡單實現(xiàn)方法也可以寫出來。
問題補充:看清題目(用C#實現(xiàn)),如果誰能做出來,多少分我都給,反正我不想用百度知道了!

建一個Win32函數(shù)的工具類如下: 
public static class Win32Api 

[DllImport("kernel32.dll", SetLastError = true)] 
public static extern IntPtr BeginUpdateResource(string pFileName, [MarshalAs(UnmanagedType.Bool)]bool bDeleteExistingResources); 

[DllImport("kernel32.dll", SetLastError = true)] 
public static extern bool UpdateResource(IntPtr hUpdate, string lpType, string lpName, ushort wLanguage, IntPtr lpData, uint cbData); 

[DllImport("kernel32.dll", SetLastError = true)] 
public static extern bool EndUpdateResource(IntPtr hUpdate, bool fDiscard); 


然后像C#方法一樣調(diào)用就行了。 
比如:(示意代碼,未驗證) 

string fileName = @"XXX\XXX.xxx"; 
// 獲得資源句柄 
IntPtr hResource = Win32Api.BeginUpdateResource(fileName, false); 
if (hResource.ToInt32() == 0) { 
throw new Win32Exception(Marshal.GetLastWin32Error()); 

string fileToUpdate = @"YYY\YYY.yyy"; 
// 累積更新 
if (Win32Api.UpdateResource(hResource, "FILE", fileToUpdate, 0, null, 0) == false) { 
throw new Win32Exception(Marshal.GetLastWin32Error()); 


// 寫入更新 
if (Win32Api.EndUpdateResource(hResource, false) == false) { 
throw new Win32Exception(Marshal.GetLastWin32Error());

 


查看完整回答
反對 回復 2023-01-15
  • 2 回答
  • 0 關注
  • 179 瀏覽

添加回答

了解更多

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號