C 自身包含其他應用程式(或者檔案)並在執行時呼叫

2021-05-28 08:48:32 字數 1040 閱讀 2927

**

kangkanglx

今天乙個同事問我,怎麼把dll動態鏈結庫直接嵌入到c#開發的應用程式本身,讓c#在發布出去的時候,只是乙個.exe的檔案,而不是乙個資料夾。我仔細思索了一下這個問題。發現這個問題其實可以總結為乙個比較普遍的問題,那就是怎樣把不同種類的檔案包含到c#開發的應用程式自身內,然後變成乙個.exe的檔案給使用者發布出去。

其實,思路還是比較簡單的,我們首先把需要包含到應用程式本身的檔案作為外部的資源檔案加入到程式中,然後在程式執行的時候,由程式自己自動把資源檔案給釋放出來,實際上就達到了,即可包含不同檔案在應用程式內,又可以隨時釋放該檔案並使用的目的。

(2)然後,我們為了測試乙個dll包含到應用程式本身,並保證該應用程式在呼叫該dll以後正常執行,我現在用vs裡面提供的帶dll的控制項,media player做乙個演示。現在我們要新增該控制項,選擇『選單』-『工具』-『工具箱項』,如下圖:

(6, 1)我們首先把這個兩個動態鏈結庫,以資源的形式匯入到我們的工程檔案中。在這裡,我先建立乙個mydll的資料夾用於存放這兩個檔案。

(6, 2)然後,我們引入剛才我們生成的兩個dll動態鏈結庫檔案(其他檔案格式的包含方式如同這個兩個dll的操作步驟一樣)

(6,2,1)引入這兩個動態鏈結庫

(6,2,2)引入後修改這兩個動態鏈結庫的屬性為嵌入資源

(6, 3)到此,所有工作都已經準備就緒了,剩下的工作,就是等待在窗體自己啟動的時候,把這兩個dll釋放出來,然後,就可以大功告成了。不過一定要記住,釋放的**必須要放在建構函式裡面且放在控制項初始化**之前,否則在控制項在初始化的時候找不到動態鏈結庫,程式會無情的被作業系統結束掉,當然最後使用完這些鏈結庫的刪除,在這個地方就不在敘述了。以下為釋放出這兩個資源的**。

(7)現在我們編譯除錯,然後把生成的kcontainer.exe應用程式拷貝到其他地方執行一下,會發現,當我們執行這個應用程式的時候,這個程式會自動釋放這兩個dll動態鏈結庫出來。感覺是不是很爽?其實所有檔案比如什麼doc,xls,exe,txt等格式的檔案都可以這樣操作,把他們包含在這乙個應用程式裡面,然後在需要的時候釋放他們,這個時候,你要傳給人家的只是乙個exe檔案而已。

intent 啟動其他應用程式應用

被啟動activity中加入標籤 啟動activity中 intent opensomediagintent new intent opensomediagintent.addcategory android.intent.category.haha handlerthreadactivity.th...

刪除應用程式自身的可執行檔案

下面的 由gary nebbett寫就.gary nebbett乃是windows nt 2000 native api reference的作者.乃nt系統一等一的高手.下面就分析一些他的這段 這段 在process沒有結束前就將啟動process的exe檔案刪除了.int main int ar...

VS中c 控制台應用程式呼叫其他應用程式的方法

1,利用createprocess呼叫 include int run exe string str exe path,string str cmd path 其中 str exe path為exe的路徑,str cmd path為str exe path 呼叫引數 引數之間需用空格分開。2,利用w...