程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++程序注冊Dll

C++程序注冊Dll

編輯:C++入門知識

注冊要在dos窗口中,那麼是不是要在程序中用shellexcute執行命令行(使用方法見我的博文)。

看了很多資料,發現,shellexcute只能執行一個命令(打開文件,運行某個應用程序等)。

接著就找到寫bat文件的方法:

[css]
@echo off 
regsvr32.exe E:\VC.dll 
pause 
路徑是絕對路徑,那麼如何獲得的呢?
找到目錄有三種方法:

[cpp]
char *p;  
char s[101]; 
p=s; 
//HMODULE hDLL = NULL; 
//hDLL=LoadLibrary("VC.dll");//GetModuleFileName的首參,NULL代表不報任何錯誤 
GetModuleFileName(NULL,p,100);//方法1得到運行程序(exe)的全路徑 
getcwd(p,100);//方法2,工程文件目錄 
cout<<argv[0]<<endl;//方法3,(同方法1) 
本程序顯然要用方法2.

接著就是寫進bat文件了。

[cpp]
fstream _file; 
_file.open("t.bat",ios::in); 
if(!_file)//如果不存在。保證首次運行的時候才注冊 

<span style="white-space:pre">  </span>char *p;  
    char s[101]; 
    p=s; 
<span style="white-space:pre">  </span>getcwd(p,100); 
    string str; 
    str=""; 
    str+="@echo off"; 
    fprintf(pfOutput, "%s\n",str.c_str()); 
 
    str=""; 
    str+="regsvr32.exe "; 
    str+=p; 
    str+="\\"; 
    str+="VC.dll"; 
 
    fprintf(pfOutput, "%s\n",str.c_str()); 
    str=""; 
    str+="pause"; 
    fprintf(pfOutput, "%s\n",str.c_str()); 
 
    fclose(pfOutput); 

寫好bat文件就要在程序中執行了。執行方法有很多種。列出兩個:
[cpp] view plaincopyprint?
ShellExecute(NULL,"open","t.bat",NULL,NULL,SW_SHOWNORMAL);//最後一個參是正常顯示窗體 
system("t.bat");//方法2 
這些寫好後,就可以直接注冊dll啦。
 注冊dll命令:

[cpp]
Regsvr32命令是Windows中控件文件(如擴展名為DLL、OCX、CPL的文件)的注冊和反注冊工具。 
命令格式   
Regsvr32  [/s]   [/n]  [/i[:cmdline]]  dllname   
/u 卸載安裝的控件,卸載服務器注冊  
/s 注冊成功後不顯示操作成功信息框;   
/i 調用DllInstall函數並把可選參數[cmdline]傳給它, 
當使用/u時用來卸載DLL;不調用DllRegisterServer,該參數必須和/i一起使用。 
關於一些注冊命令(DOS窗口下):

注冊所有dll命令:

[cpp]
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1 


作者:hss871838309

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved