青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

在VC項(xiàng)目中使用自定義資源



  在VC環(huán)境中除了我們所常用的Dialog、Menu和Bitmap等標(biāo)準(zhǔn)資源類型之外,它還支持自定義資源類型(Custom Resource),我們自定義的資源類型能做些什么呢?呵呵,用處多多。
  1. 默認(rèn)的皮膚壓縮包或語(yǔ)言包。一些支持換膚的軟件特別是一些媒體播放器常常有自定義的皮膚文件(你可以嘗試將Media Player或千千靜聽(tīng)等軟件的Skins目錄下的文件的擴(kuò)展名改為.zip,然后使用WinZip打開(kāi)看一下),但為了防止Skin文件丟失導(dǎo)致軟件無(wú)法顯示,他們常常會(huì)在EXE文件中內(nèi)置一套Skin作為默認(rèn)的皮膚文件。同樣,一些支持多語(yǔ)言的EXE文件中存在默認(rèn)語(yǔ)言包也是這個(gè)道理(當(dāng)然也可以使用"String Table"資源類型);
  2. 做為一些病毒/木馬程序的寄生方式。如果不小心執(zhí)行了帶有病毒/木馬的程序,它們會(huì)在你運(yùn)行時(shí)釋放出病毒/木馬文件。當(dāng)然許多病毒是將自身寫入PE文件頭來(lái)實(shí)現(xiàn);
  3. 合并EXE與它所需要的DLL文件。出于某些原因程序作者有時(shí)可能需要將DLL文件嵌入到可執(zhí)行的EXE文件中,這可以通過(guò)使用自定義資源來(lái)實(shí)現(xiàn);
  4. 其它需要在程序中播放一個(gè)AVI動(dòng)畫等等,都可以通過(guò)將二進(jìn)制的數(shù)據(jù)文件作為自定義資源加入到可執(zhí)行文件中來(lái)實(shí)現(xiàn);

二、添加

  添加資源時(shí)選擇自定義,IDE會(huì)為你生成一個(gè)新的二進(jìn)制資源,然后你就可以將你已經(jīng)存在的二進(jìn)制文件作為自定義的資源類型導(dǎo)入到項(xiàng)目中來(lái)了。

三、使用

  要使用自定義資源,我們可能要用到的幾個(gè)API函數(shù)有FindResource、LoadResource和LockResource等,這里每一個(gè)函數(shù)的返回值分別作為下一個(gè)函數(shù)的參數(shù),我來(lái)簡(jiǎn)要介紹一下。

  1. FindResource用來(lái)在一個(gè)指定的模塊中定位所指定的資源:
    HRSRC FindResource(
        HMODULE hModule,		//包含所需資源的模塊句柄,如果是程序本身,可以置為NULL
        LPCTSTR lpName,		//可以是資源名稱或資源ID
        LPCTSTR lpType		//資源類型,在這里也就是我們自己指定的資源類型
        );      
  2. LoadResource用來(lái)將所指定的資源加載到內(nèi)存當(dāng)中;
    HGLOBAL LoadResource(
        HMODULE hModule,		//模塊句柄,同上
        HRSRC hResInfo		//需要加載的資源句柄,這里也就是FindResource的返回值
        );		
  3. LockResource用來(lái)鎖定內(nèi)存中的資源數(shù)據(jù)塊,它的返回值也就是我們要使用的直系指向資源數(shù)據(jù)的內(nèi)存指針;
    LPVOID LockResource(
        HGLOBAL hResData		//指向內(nèi)存中要鎖定的資源數(shù)據(jù)塊,這里也就是LoadResource的返回值
        );		
  另外我們還需要用SizeofResource來(lái)確定資源的尺寸,我們?cè)诓僮髻Y源時(shí)要用到它。在資源使用完畢后我們不需要使用UnlockResource和FreeResource來(lái)手動(dòng)地釋放資源,因?yàn)樗鼈兌际?6位Windows遺留下來(lái)的,在Win32中,在使用完畢后系統(tǒng)會(huì)自動(dòng)回收。它們的使用很簡(jiǎn)單,大致上是這個(gè)樣子的:
BOOL UseCustomResource()
{
//定位我們的自定義資源,這里因?yàn)槲覀兪菑谋灸K定位資源,所以將句柄簡(jiǎn)單地置為NULL即可
HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(ITEMID), TEXT("MyType"));
if (NULL == hRsrc)
return FALSE;
//獲取資源的大小
DWORD dwSize = SizeofResource(NULL, hRsrc);
if (0 == dwSize)
return FALSE;
//加載資源
HGLOBAL hGlobal = LoadResource(NULL, hRsrc);
if (NULL == hGlobal)
return FALSE;
//鎖定資源
LPVOID pBuffer = LockResource(hGlobal);
if (NULL == pBuffer)
return FALSE;
//我們用剛才得到的pBuffer和dwSize來(lái)做一些需要的事情。可以直接在內(nèi)存中使
//用,也可以寫入到硬盤文件。這里我們簡(jiǎn)單的寫入到硬盤文件,如果我們的自定
//義資源是作為嵌入DLL來(lái)應(yīng)用,情況可能要復(fù)雜一些。
BOOL bRt = FALSE;
FILE* fp = _tfopen(_T("demo.exe"), _T("wb"));
if (fp != NULL)
{
if (dwSize == fwrite(pBuffer, sizeof(char), dwSize, fp))
bRt = TRUE;
fclose(fp);
}
//FreeResource(hGlobal);
return bRt;
}      
四、實(shí)例

  下面我們準(zhǔn)備用自定義資源來(lái)做兩件事情:一件是用我們生成的可執(zhí)行文件的自定義資源中來(lái)釋放一個(gè)Hello World程序(類似于木馬程序釋放服務(wù)端);另一件是從自定義資源中解壓縮一個(gè)壓縮包(類似于換膚軟件釋放默認(rèn)的皮膚文件)。這里我們模擬WinZip的Self-Extractor工具的界面和功能來(lái)完成它(呵呵,不過(guò)請(qǐng)不要誤會(huì),WinZip嵌入到壓縮包的自解壓工具可不是像我們這樣實(shí)現(xiàn)的,這里只是來(lái)演示一下從自定義資源解壓縮多個(gè)文件的一個(gè)過(guò)程而已),具體的實(shí)現(xiàn)可以參考本文所附帶的源代碼。它最終運(yùn)行起來(lái)大概是這么個(gè)樣子:


圖四 模仿Self-Extractor界面的運(yùn)行結(jié)果

  運(yùn)行后,點(diǎn)擊"Release"按鈕會(huì)在當(dāng)前目錄下釋放一個(gè)Win32版的Hello World程序;點(diǎn)擊"Unzip"按鈕則會(huì)在指定目錄釋放本Demo的工程文件及項(xiàng)目的所有源代碼,而編譯這個(gè)工程則恰恰得到了上面的可執(zhí)行文件。

本工程在WinXP + VC.Net 2003 + WTL7.5環(huán)境下編譯并運(yùn)行通過(guò)。

posted on 2008-04-09 16:16 wrh 閱讀(678) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


導(dǎo)航

<2009年5月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

統(tǒng)計(jì)

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产一区白浆| 午夜精品三级视频福利| 亚洲欧美精品伊人久久| 亚洲美女少妇无套啪啪呻吟| 尹人成人综合网| 亚洲大胆女人| 激情综合久久| 亚洲国产影院| 日韩亚洲一区二区| 亚洲一区二区精品视频| 亚洲欧美日韩综合| 欧美在线免费| 免费国产自线拍一欧美视频| 美女诱惑一区| 亚洲剧情一区二区| 亚洲一区视频在线| 欧美在线视频播放| 你懂的视频欧美| 欧美日本韩国一区| 国产农村妇女精品一二区| 黄色小说综合网站| 日韩一区二区久久| 久久爱另类一区二区小说| 欧美激情a∨在线视频播放| 91久久久一线二线三线品牌| 亚洲国产成人tv| 亚洲一区二区欧美| 蜜桃伊人久久| 国产精品一区毛片| 亚洲激情在线| 久久精品人人做人人综合| 欧美黄色精品| 午夜在线一区| 欧美日韩福利视频| 久久综合久色欧美综合狠狠| 欧美精品www| 国产亚洲欧美日韩一区二区| 亚洲国产精品久久| 久久国内精品视频| 亚洲免费成人| 蜜桃av综合| 国产一区二区三区久久| 亚洲精品在线二区| 久久精品一区蜜桃臀影院| 日韩视频专区| 欧美aaa级| 精品999在线观看| 欧美一区二区三区免费视频| 亚洲人成久久| 久久综合五月天婷婷伊人| 国产精品久久久久一区二区三区| 亚洲国产精品va在看黑人| 欧美中文字幕在线视频| 99人久久精品视频最新地址| 欧美成黄导航| 亚洲国产日韩在线| 免费成人激情视频| 久久精品国产精品| 久久国产一区| 国内激情久久| 久久精品观看| 性久久久久久久久久久久| 国产精品黄页免费高清在线观看| 亚洲美女毛片| 亚洲国产一区二区视频| 免费观看在线综合| 最新成人av网站| 欧美 日韩 国产精品免费观看| 欧美亚洲色图校园春色| 国产精品一区免费视频| 午夜精品美女自拍福到在线| 亚洲香蕉伊综合在人在线视看| 欧美日韩精品在线观看| 亚洲欧美电影院| 在线综合亚洲| 国产日韩欧美另类| 久久亚洲国产成人| 久久琪琪电影院| 亚洲精品久久在线| 亚洲人体偷拍| 国产毛片精品视频| 久久亚洲精品一区二区| 久久中文字幕导航| 亚洲视频久久| 亚洲欧美国产精品桃花| 激情av一区二区| 亚洲高清在线观看| 欧美日韩一区视频| 欧美中文字幕第一页| 久久久久久久久岛国免费| 亚洲毛片在线观看.| 日韩手机在线导航| 国产亚洲精品综合一区91| 久久综合一区二区| 亚洲免费av电影| 国产伦精品一区二区三区高清版| 久久久国产精彩视频美女艺术照福利| 久久视频一区二区| 一区二区三区四区五区视频| 亚洲午夜未删减在线观看| 国产一区二区电影在线观看 | 久久青草久久| 欧美精品国产一区| 欧美在线黄色| 欧美激情视频在线播放 | 久久精品在线播放| 欧美岛国激情| 欧美一区二区三区四区夜夜大片| 久久精品国产99| 一区二区三区日韩精品| 久久黄色网页| 亚洲一区二区视频在线| 欧美一区二区三区四区在线观看| 亚洲国产日韩一区| 欧美一区二区精品| 一区二区高清在线| 老司机精品视频网站| 日韩视频中午一区| 久久国产精品毛片| 亚洲一区在线视频| 免费观看日韩| 浪潮色综合久久天堂| 国产精品欧美日韩一区| 亚洲全黄一级网站| 亚洲高清免费| 久久成人资源| 午夜在线精品| 欧美日韩在线观看一区二区三区| 久久亚洲欧洲| 国产日韩欧美一二三区| 99视频在线观看一区三区| 亚洲黄色成人久久久| 午夜精品久久久久久久久久久久久 | 欧美呦呦网站| 国产精品日韩久久久久| 亚洲久色影视| 99国产精品久久久久老师| 久久乐国产精品| 麻豆精品91| 蜜桃av噜噜一区二区三区| 欧美日韩一区二区高清| 亚洲国产第一| 亚洲经典三级| 欧美风情在线观看| 亚洲国产精品一区二区第一页| 国产一区二区三区在线观看免费 | 欧美色大人视频| 99视频热这里只有精品免费| 99re6这里只有精品| 欧美日韩国产成人在线观看| 亚洲日本一区二区三区| 一区二区免费在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产精品国产| 亚洲欧美在线一区二区| 欧美一区二区三区视频| 国产日韩一区二区| 久久久久久久成人| 亚洲第一中文字幕| 日韩一区二区电影网| 欧美日韩亚洲一区二区三区在线 | 亚洲婷婷综合色高清在线| 亚洲免费电影在线| 亚洲欧美日韩一区| 国产无一区二区| 久久久亚洲精品一区二区三区| 久热re这里精品视频在线6| 在线日韩av| 欧美日韩福利视频| 午夜日韩福利| 亚洲国产毛片完整版| 亚洲色图在线视频| 国产亚洲免费的视频看| 欧美aa在线视频| 亚洲一区自拍| 亚洲国产精品日韩| 欧美一乱一性一交一视频| 亚洲第一区在线观看| 欧美日韩免费网站| 久久精品国产一区二区三| 亚洲激情不卡| 久久久久九九九九| 一个色综合导航| 国语精品一区| 欧美日韩视频一区二区| 久久久久五月天| 一区二区三区久久网| 免费在线观看精品| 欧美在线综合视频| 亚洲欧美国产日韩中文字幕| 亚洲第一在线| 国产视频欧美| 国产精品毛片高清在线完整版| 免费成年人欧美视频| 久久av在线| 亚洲免费在线| 正在播放欧美视频| 亚洲免费观看高清在线观看| 亚洲大黄网站| 欧美激情视频免费观看|