線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4120
推到 Plurk!
推到 Facebook!

我的經驗分享--將dll包裝在單一執行檔並且可以自動對os註冊dll

 
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-26 16:38:28 IP:163.26.xxx.xxx 未訂閱
小弟最近因為專題需要..寫了一隻可以控制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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-28 08:42:12 IP:218.5.xxx.xxx 未訂閱
谢谢geniustom将经验分享,我已将其收藏留待以后作为开发的参考.其实我现在更希望得到'控制usb的簡易呼叫dll'的源码或只是涉及USB处理的实例,不知可提供否. 發表人 - fangwy 於 2003/09/28 09:06:15
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-30 01:48:53 IP:163.26.xxx.xxx 未訂閱
恩..第一次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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-05-19 20:12:37 IP:203.67.xxx.xxx 訂閱
> 在這之前要建立一個rc檔..將dll包進去..
請問如何建立 ?
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
系統時間:2024-03-29 1:40:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!