我的經驗分享--將dll包裝在單一執行檔並且可以自動對os註冊dll |
|
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
小弟最近因為專題需要..寫了一隻可以控制usb的簡易呼叫dll..原始是使用windriver提供的
因為他本身提供了一個較底層的dll..用起來複雜難懂..於是我將他的程序整合起來..製成了另一個dll..只要call簡單的function就可以達到相同的效果..但是要如何讓我的程式只有一個執行檔..
且又能讓系統自動登錄windriver的dll呢??廢話不多說..以下是我的做法...
-----------------------------------------------------------------------------
由於dll的呼叫是在產生表單後才宣告..所以我們可以把之前所說的動作作在專案檔(DPR)裡..
在這之前要建立一個rc檔..將dll包進去..
----------------------------my.rc-----------------------------------
MYDLL dll0 C:\wd_utils.dll //這是windriver提供的dll..需登錄 GENIUSTOMDLL dll1 C:\Geniustom_Hid.dll //這是我自己寫的dll-----------------------------project1.dpr--------------------------------- program project1; {$R 'my.res' 'my.rc'} uses Forms,Windows, Messages, SysUtils, Variants, Classes,Dialogs,Graphics, Controls, Unit1 in 'Unit1.pas' {FORM1} {$R *.res} var szSysPath:array[0..64] of char; Res : TResourceStream; begin Application.Initialize; GetSystemDirectory(szSysPath,64); //取得system目錄 Res:=TResourceStream.Create(Hinstance,'dll0','MYDLL'); Res.SavetoFile(string(szSysPath) '\wd_utils.dll'); Res.Free; //解出windriver的dll WinExec(pchar(szSysPath '\regsvr32.exe ' szSysPath '\wd_utils.dll /s'),windows.SW_HIDE); //向系統登錄 Res:=TResourceStream.Create(Hinstance,'dll1','GENIUSTOMDLL'); Res.SavetoFile(string(szSysPath) '\Geniustom_Hid.dll'); Res.Free; //解出我的dll Application.CreateForm(TForm1, Form1); Application.run end.------------------------------------------------------------------------------------------- 接下來就可以在unit1裡面宣告dll的函式...如此一來就可以將程式stand alone 囉 ^_^ |
fangwy
中階會員 發表:99 回覆:139 積分:62 註冊:2003-09-10 發送簡訊給我 |
|
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
恩..第一次po這個分享的文章..沒想到有這麼多大大幫我加分..
真是感動呀< >..不過小弟目前沒有免費的網頁空間..
只好放在我以前幫我們社團做網頁的主機..應該蠻難被學校砍檔的吧< >
usb access demo.rar
這裡面有windriver提供的dll..還有我自己寫的 Geniustom_Hid.dll 的原始碼
外加test.dpr作測試用的..因為這支程式存翠只是測試..所以沒有寫stand alone的東西..因為有很多底層的東西..要定usb的描述元..
我的專題是使用Cypress的ez-usb晶片來與電腦溝通..描述元定義放在WinDrvr.pas中..如果要自己開發usb裝置..需要先知道他的描述元..還有輸入輸出的pipe..在WinDrvr.pas中修改..才能正確的動作唷 本站下載:
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |