C 實現第三方資源釋放與載入過程(以DLL為例)

2022-08-30 18:54:09 字數 2780 閱讀 1712

我們經常看見有一些程式開始執行時會釋放一些檔案,以便於後續操作。例如一些病毒為了便於傳播和隱藏,經常把一些需要用的動態庫或是驅動檔案打包進乙個可執行檔案中,再由需要使用的時候,再臨時釋放和載入。接下來筆者就將演示如何將dll打包進檔案,並實現動態釋放和載入。

1.在專案工程上點選右鍵,選擇「新增資源」;

2.選擇"匯入"項,選擇「所有檔案」,選擇我們要匯入的檔案「test.dll」;

3.會彈出命名自定義資源型別的對話方塊,自定義我們的資源型別;

4.點選確定後,完成匯入,"ctrl+s"儲存二進位制資源檔案;

5.我們可以在自動新增的「resource.h」標頭檔案中看到我們的資源id巨集;

6.程式設計實現載入資源。

// 獲取資源大小

dword dwsize = sizeofresource(null, hrsrc);

if (dwsize <= 0)

// 載入資源

hglobal hglobal = loadresource(null, hrsrc);

if (hglobal == null)

// 鎖定資源,並返回指向資源第一位元組的指標

lpvoid lpres = lockresource(hglobal);

if (lpres == null)

handle hfile = createfile(szfilename, generic_read | generic_write, file_share_read | file_share_write, null, create_always, file_attribute_normal, null);

if (hfile == null)

dword dwwriten = 0;

bool bres = writefile(hfile, lpres, dwsize, &dwwriten, null);

if (bres == false || dwwriten <= 0)

closehandle(hfile);

closehandle(hglobal);

closehandle(hrsrc);

return true;

}int apientry winmain(_in_ hinstance hinstance, _in_opt_ hinstance hprevinstance, _in_ lpstr lpcmdline, _in_ int nshowcmd)

hmodule hmodule = loadlibrary("test.dll");

if (hmodule == null)

func fc = (func)getprocaddress(hmodule, "func");

if (fc == null)

fc();

freelibrary(hmodule);

return 0;

}

如何載入第三方js

網頁中載入js檔案是乙個老問題了,已經被討論了一遍又一遍,這裡不會再贅述各種經典的解決方案。js檔案可以通過 來分為兩個緯度 第一方js和第三方js。第一方js是網頁開發者自己使用的js 內容開發者可控 而第三方js則是其他服務提供商提供的 內容開發者不可控 他們將自己的服務包裝成js sdk供網頁...

專案配置 新增第三方資源

當使用第三方控制項庫時,會需要新增相應的資源。下例中所示第三方庫的目錄結構如下 d stingray studio 2006 v2 toolkit secres.h d stingray studio 2006 v2 toolkit secres.rc 其配置步驟如下 1.在資源檢視中,選中專案的 ...

C Winform第三方控制項資源彙總

1.hzhcontrols 傳送門 clickme 2.sunnyui.sharp 傳送門 clickme 3.fontawesome.sharp 老外寫的 傳送門 clickme 安裝完成之後,直接就可以在工具欄中呼叫控制項 最後我通過自己的使用評價以下這三種控制項庫,前兩個都是中國人寫的,比較開...