知识大全 C#实现动态调用Windows DLL

Posted 函数

篇首语:贪婪是最真实的贫穷,满足是最真实的财富。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C#实现动态调用Windows DLL相关的知识,希望对你有一定的参考价值。

C#实现动态调用Windows DLL  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  部分代码来自于网络 废话不多说 上代码

  调用方法

  object obj = WinDllInvoke( Kernel dll Beep new object[] typeof(void));函数代码

   [System Runtime InteropServices DllImport( kernel )]           private static extern IntPtr LoadLibrary(string lpLibFileName);             [System Runtime InteropServices DllImport( kernel )]           private static extern IntPtr GetProcAddress(IntPtr hModule string lpProcName);             [System Runtime InteropServices DllImport( kernel )]           private static extern IntPtr FreeLibrary(IntPtr hLibModule);           ///          /// 动态调用Windows DLL          ///          /// Dll文件名          /// 待调用的函数名          /// 函数参数          /// 返回值          /// 调用结果          private static object WinDllInvoke(string fileName string funName object[] objParams Type returnType)                       IntPtr libHandle = IntPtr Zero;              try                               //获取函数地址                  libHandle = LoadLibrary(fileName);                  if (libHandle == IntPtr Zero) return null;                  IntPtr procAddres = GetProcAddress(libHandle funName);                  if (procAddres == IntPtr Zero) return null;                                   //获取参数类型                  Type[] paramTypes = new Type[objParams Length];                  for (int i = ; i < objParams Length; ++i)                                       paramTypes[i] = objParams[i] GetType();                                   //构建调用方法模型                  AssemblyName asembyName = new AssemblyName();                  asembyName Name = WinDllInvoke_Assembly ;                  AssemblyBuilder asembyBuilder = AppDomain CurrentDomain DefineDynamicAssembly(asembyName AssemblyBuilderAccess Run);                  ModuleBuilder moduleBuilder = asembyBuilder DefineDynamicModule( WinDllInvoke );                  MethodBuilder methodBuilder = moduleBuilder DefineGlobalMethod( InvokeFun MethodAttributes Public | MethodAttributes Static returnType paramTypes);                  //获取一个 ILGenerator 用于发送所需的 IL                  ILGenerator IL = methodBuilder GetILGenerator();                  for (int j = ; j < paramTypes Length; ++j)                                       //将参数压入堆栈                      if (paramTypes[j] IsValueType)                                               IL Emit(OpCodes Ldarg j); //By Value                                           else                                               IL Emit(OpCodes Ldarga j); //By Addrsss                                                        // 判断处理器类型                  if (IntPtr Size == )                                       IL Emit(OpCodes Ldc_I procAddres ToInt ());                                   else if (IntPtr Size == )                                       IL Emit(OpCodes Ldc_I procAddres ToInt ());                                   else                                       throw new PlatformNotSupportedException( 不好意思

cha138/Article/program/net/201311/12149

相关参考

知识大全 asp调用C#编写的DLL发送邮件

asp调用C#编写的DLL发送邮件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一直想写一个a

知识大全 C#使用Dllmport来调用dephi的dll

C#使用Dllmport来调用dephi的dll  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n

知识大全 怎样在MFC中调用C#编写的DLL

怎样在MFC中调用C#编写的DLL  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一使用/clr

知识大全 利用JNative实现Java调用dll动态库

利用JNative实现Java调用dll动态库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  由

知识大全 VB动态调用自己的ActiveX DLL

VB动态调用自己的ActiveXDLL  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 C#中动态加载和卸载DLL

C#中动态加载和卸载DLL  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在C++中加载和卸载D

知识大全 C#调用Windows API函数

C#调用WindowsAPI函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Api函数是构筑

知识大全 Visual C#中调用Windows服务初探

VisualC#中调用Windows服务初探  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Wi

知识大全 C#中调用Windows API的要点

C#中调用WindowsAPI的要点  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在NetFr

知识大全 C#中调用Windows API的技术要点

C#中调用WindowsAPI的技术要点  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在Net