Windows程序设计高级-基于.NET平台开发CRM系统-第二部分Windows高级编程CORE-08.ppt

Windows程序设计高级-基于.NET平台开发CRM系统-第二部分Windows高级编程CORE-08.ppt

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

1非控代码的调用第八章

2教学目标了解平台调用服务。理解.NET中的COM调用。

3非控代码非控代码的定义指不被.NET运行环境管理或控制的代码非控代码的类型平台调用服务:允许.NET代码访问现有的非控动态链接库(DLL)中的函数、结构,甚至回调COM互操作性:在.NET中使用COM组件,以及在COM应用程序中使用.NET组件

4动态链接库的调用PInvoke:PlatformInvocationServicesPInvoke调用专指对动态链接库的调用

5动态链接库的调用Pinvoke语法[DllImport(……)]访问修饰符staticextern[返回类型][函数名](参数列表)DllImport是属性:DllImportAttribute例:[DllImport(“user32.DLL”)]导入了user32.dll这样第一个系统动态链接库可以声明要使用这个链接库中的函数注意:返回值和参数列表要同受控代码的声明一一对应声明的函数名称并非一定是动态链接库中实际的函授名称

6动态链接库的调用DllImport的参数:必须的参数:库文件可选的常用参数:EntryPoint:指出实际的函数名CharSet,SetLastError…etc。

7动态链接库的调用例:在Windows的核心动态链接库User32.DLL中有一个MessageBoxA的函数,用于显示一个对话框首先用DllImport导入User32.DLL[DllImport(“User32.DLL”)]接着描述函数信息[private|public|protected|internal]staticexternintMessageBoxA(intHwnd,stringmsg,stringtitle,inttype);

8PInvoke调用例子(1)调用user32.dll中的MessageBox原型:int?MessageBox(HWND?hWnd, LPCTSTR?lpText, LPCTSTR?lpCaption, UINT?uType);HWND是Int型;LPCTSTR是字符串;INT是无符号整型;

9PInvoke调用例子(1)调用user32.dll中的MessageBox声明: 声明时候所有的类型需匹配对应的语言类型,对c#应该是: HWND声明为Int; LPCTSTR声明为string; UINT声明为int。

10PInvoke调用例子(1)调用User32.dll中的MessageBoxMessageBox对应的c#声明为:[DllImport(“user32.dll”)]publicstaticexternintMessageBox( inthwnd, stringmsg,stringtitle, inttype);

usingSystem;usingSystem.Runtime.InteropServices;namespaceS2306T09_01{classProgram{[DllImport(“user32.DLL)]publicstaticexternintMessageBoxA(inthwnd,stringmsg,stringtitle,inttype);staticvoidMain(string[]args){MessageBoxA(0,P-Invoke,P9,1);}}}例:Chapter08_01

12PInvoke调用例子(2)使用EntryPoint改变调用名MessageBox对应的c#声明为:[DllImport(“user32.dll”,EntryPoint=“MessageBox”)]publicstaticexternintShowMessage( inthwnd, stringmsg, stringtitle, inttype);

13COM调用tlbimp工具的使用如:tlbimpexcel.exe/out:excel.dll

14COM调用利用Excel的com接口操作excel文档(读/写)ApplicationClass:代表整个excel对象_Workbook:代表一个excel文档_Worksheet:代表一个文档中的一个sheet例:Chapter08_02

15总结什么是非控代码如何进行PInvoke调用如何进行COMInterop调用

您可能关注的文档

文档评论(0)

医药前沿 + 关注
实名认证
内容提供者

专业医药相关文档服务

1亿VIP精品文档

相关文档