本來是想實現控制台程式執行時自動全屏,但是只找到
vc下的實現方法(
)。其中要使用兩個未公開的
win32 api
函式來訪問控制台視窗,這就需要使用
動態呼叫的方法,動態呼叫中使用的
windows api
函式主要有三個,即:
loadlibrary
,getprocaddress
和freelibrary
。步驟如下:
1.loadlibrary:
裝載指定
dll動態庫
2.getprocaddress
:獲得函式的入口位址
3.freelibrary:
從記憶體中解除安裝動態庫
但是c#
中是沒有函式指標,無法直接使用
getprocaddress
返回的入口位址。後來找到資料,其實
.net 2.0
新增了marshal.getdelegateforfunctionpointer
方法可以滿足這個要求,
msdn
裡的解釋是:將非託管函式指標轉換為委託。
後面的事就簡單啦,我把它編成了乙個類來方便呼叫。
下面是使用的例子:
using
system;
using
system.collections.generic;
using
system.text;
using
system.runtime.interopservices;
using
feiyun0112.cnblogs.com;
namespace}}
using
system;
using
system.collections.generic;
using
system.text;
using
system.runtime.interopservices;
namespace
feiyun0112.cnblogs.com
~dllinvoke()
//將要執行的函式轉換為委託
public
delegate invoke (
string
apiname,type t) }}
C 動態呼叫DLL
在工作中經常需要寫dll並呼叫。本文寫出一種最簡單實用的dll動態呼叫的demo。口訣 1個檔案2行單詞3步走 dll1個檔案2個單詞 1個檔案.def,2個單詞 export test函式名 exe3步走。申明函式,載入庫,指向函式 1 新建乙個空的exe專案 2 新建乙個空的dll專案,並新增同...
C 呼叫動態DLL
c 呼叫動態鏈結庫方法 dllimport mydll.dll public static extern int add int a,int b private void btn add click object sender,eventargs e 如果需要呼叫同乙個dll檔案中的兩個不同函式,則...
C 動態呼叫Dll
利用反射進行動態載入和呼叫.assembly ass assembly.loadfrom dllpath 利用dll的路徑載入 載入dll後,需要使用dll中某類.type type ass.gettype typename 利用型別的命名空間和名稱獲得型別 需要例項化型別,才可以使用,引數可以人為...