- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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调用
您可能关注的文档
- Windows程序设计高级-基于.NET平台开发CRM系统-第二部分Windows高级编程CORE-05.ppt
- Windows程序设计高级-基于.NET平台开发CRM系统-第二部分Windows高级编程CORE-06.ppt
- Windows程序设计高级-基于.NET平台开发CRM系统-第二部分Windows高级编程CORE-07.ppt
- Windows程序设计高级-基于.NET平台开发CRM系统-第二部分Windows高级编程CORE-09.ppt
- Windows程序设计高级-基于.NET平台开发CRM系统-第二部分Windows高级编程CORE-10.ppt
- Windows程序设计高级-基于.NET平台开发CRM系统-第二部分Windows高级编程CORE-10.ppt
- 工程实践创新-智慧社区CORE-03.pptx
- 工程实践创新-智慧社区CORE-07.pptx
- 基于MVC的Java Web项目实战CORE-01.ppt
- 基于MVC的Java Web项目实战CORE-02.ppt
- 第12课 大一统王朝的巩固 课件(20张ppt).pptx
- 第17课 君主立宪制的英国 课件.pptx
- 第6课 戊戌变法 课件(22张ppt).pptx
- 第三章 物态变化 第2节_熔化和凝固_课件 (共46张ppt) 人教版(2024) 八年级上册.pptx
- 第三章 物态变化 第5节_跨学科实践:探索厨房中的物态变化问题_课件 (共28张ppt) 人教版(2024) 八年级上册.pptx
- 2025年山东省中考英语一轮复习外研版九年级上册.教材核心考点精讲精练(61页,含答案).docx
- 2025年山东省中考英语一轮复习(鲁教版)教材核心讲练六年级上册(24页,含答案).docx
- 第12课近代战争与西方文化的扩张 课件(共48张ppt)1.pptx
- 第11课 西汉建立和“文景之治” 课件(共17张ppt)1.pptx
- 唱歌 跳绳课件(共15张ppt内嵌音频)人音版(简谱)(2024)音乐一年级上册第三单元 快乐的一天1.pptx
文档评论(0)