如题,除了DllImport的这种静态的方法
高手帮忙,怎样使用Windows API函数LoadLibrary,GetProcAddress,CallWindowProc执行C++编写的DLL中的方法,
主要是怎样用CallWindowProc实现Dll中的功能,谢谢!!!
高手帮忙,怎样使用Windows API函数LoadLibrary,GetProcAddress,CallWindowProc执行C++编写的DLL中的方法,
主要是怎样用CallWindowProc实现Dll中的功能,谢谢!!!
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);那么在C#中怎样声明CallWindowProc 我编写的部分代码是:
string[] files = Directory.GetFiles(Application.StartupPath, "tt.dll");
foreach(string file in files)
{
hModule = LoadLibrary(file);
farProc = GetProcAddress(hModule,"Add");//Dll中有一个用C++编写的类,类中有一个函数Add
CallWindowProc(*, *, *, *, *);
}CallWindowProc中的各个参数分别代表什么,怎样将farProc和Add的参数等信息传进去,让其执行?
http://www.microsoft.com/china/msdn/library/langtool/vcsharp/csharp05162002.mspx
http://blog.csdn.net/dragonsuc/archive/2003/06/30/20791.aspxtry
{
//動態加載dll文件,
string sDllName = ServiceId.Substring(0,ServiceId.IndexOf("."));
Assembly DllAssembly = Assembly.Load(sDllName);
//執行選定的類別
ISDServer.ITransaction Tx = (ISDServer.ITransaction)DllAssembly.CreateInstance(sDllName+".Transaction");
return Tx.Execute((ISDServer.IProcess)this,ServiceId,oType,sParam);
如下也可以:
string DllPath = Application.StartupPath + @"\someDLL.dll";
System.Reflection.Assembly assmble = System.Reflection.Assembly.LoadFile(DllPath);
Type tmpType = assmble.GetType("someDLL.ClassA");
System.Reflection.MethodInfo tmpM = tmpType.GetMethod("Add");
object tmpobj = assmble.CreateInstance("someDLL.ClassA");
int i = (int)tmpM.Invoke(tmpobj, new object[]{2,3});
----------ClassA的定义--------------------
using System;
namespace someDLL
{
/// <summary>
/// ClassA 的摘要说明。
/// </summary>
public class ClassA
{
public ClassA()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public int Add(int a, int b)
{
return a+b;
}
}
}