




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,C#WINDOWSAPI,ae,easy,expansion,ApplicationProgrammingInterface,.,目录,CWAPI,1,2,3,4,WindowsapiIntroduction,WindowsapiReference,Windowsapicode,WindowsapiHook,.,1,WindowsapiIntroduction,WINDOWSAPI中包含很多函数,约有1500多个.根据其类别主要分为:窗口及窗口过程、声音及音频控制、位图及位图处理、INI及注册表操作、窗口效果及管理类、字体相关、错误处理、通用对话框、压缩及加密控制、文件及目录操作、剪切板使用、绘图及图形相关、游戏手柄及键盘相关、堆栰操作、图标光标相关、菜单操作、HOOK及消息处理、鼠标控制类、进程及线程管理、文本及字符串操作、时间和定时器管理、端口及网络相关、存储及显示打印设备、多媒体及MCI相关、内存管理、操作系统SHELL、WINDOWS系统信息和其他等。WINDOWS中有3个非常重要的底层DLL文件:KERNEL32.DLL、USER32.DLL和GDI32.DLL。其中KERNEL32.DLL-主要包含用于管理内存、进程和线程的函数;USER32.DLL-中包含的则是用于执行用户界面任务的函数,比如把用户的鼠标点击操作传递给窗口等等.GDI32.DLL-全称是GRAPHICALDEVICEINTERFACE(图形设备接口),包含用于画图和显示文本的函数,比如要显示一个程序窗口,就调用了其中的函数来画这个窗口.,.,WindowsAPI的功能分类,文件系统:对文件的基本操作包括文件的创建,打开,读写,关闭,删除,文件属性的更改,目录操作,以及磁盘分卷的操作,镜像文件加密文件系统等。内存管理:主要是内存的分配,共享,释放等内容,包括虚拟内存管理,分页机制,堆管理等。进程线程模块:包括进程主程序(exe),模块,动态链接库,线程的创建,遍历,同步等操作,进程与权限等。设备I/O,驱动程序控制:加载与卸载驱动程序,控制驱动程序,与驱动程序通信等。调试与错误处理:包括如何开发调试器,程序运行错误处理,日志记录,widows可执行文件的结构等。Windows系统消息:包括注册表的操作,打开,读取,植入,创建和删除键值对,还包括系统基本消息的获取和设置,如:系统日志,系统版本,计算机名等。进程间通信:包括使用共享文件进行进程间的通信的方法,使用消息进行进程间通信:使用管道,共享内存等方法。定时器与消息机制:消息机制是windows系统中很重要的一种机制,几乎所有的windows应用程序都在于消息打交道。而windows的消息机制又是依赖于定时器,所以了解消息机制对学习windows开发是至关重要的。,.,2,WindowsapiReference,引用此名称空间,实现引用非托管函数usingSystem.Runtime.InteropServices使用DllImportAttribute特性来引入api函数,注意声明的是空方法,即方法体为空。DllImport(user32.dll)publicstaticexternReturnTypeFunctionName(typearg1,typearg2,.);可以使用字段进一步说明特性,用逗号隔开,如:DllImport(user32.dll,EntryPoint=FindWindow,CallingConvention=CallingConvention.StdCall,CharSet=CharSet.Auto,ExactSpelling=false)privatestaticexternIntPtrFindWindow(stringClassName,stringWindowNamw);,.,Dlllmport,举例属性,1,2,3,4,EntryPoint:指示要调用的DLL入口点的名称或序号。如果你的方法名不想与api函数同名的话,要显示指定此参数。,CallingConvention:指示向非托管实现传递方法参数时所用的CallingConvention值。CallingConvention.StdCall:被调用方清理堆栈。它是从托管代码调用非托管函数的默认约定。,CharSet:用于标识函数调用时所采用的是Unicode还是ANSI版本。,ExactSpelling=false:告诉编译器,去决定使用Unicode还是ANSI,.,chartset,CharSet控制调用函数的名称版本及指示如何向方法封送String参数.。此字段被设置为CharSet值之一。如果CharSet字段设置为Unicode,则所有字符串参数在传递到非托管实现之前都转换成Unicode字符。这还导致向DLLEntryPoint的名称中追加字母“W”。如果此字段设置为Ansi,则字符串将转换成ANSI字符串,同时向DLLEntryPoint的名称中追加字母“A”。大多数Win32API使用这种追加“W”或“A”的约定。如果CharSet设置为Auto,则这种转换就是与平台有关的(在WindowsNT上为Unicode,在Windows98上为Ansi)。CharSet的默认值为Ansi。CharSet字段也用于确定将从指定的DLL导入哪个版本的函数。CharSet.Ansi和CharSet.Unicode的名称匹配规则大不相同。对于Ansi来说,如果将EntryPoint设置为“MyMethod”且它存在的话,则返回“MyMethod”。如果DLL中没有“MyMethod”,但存在“MyMethodA”,则返回“MyMethodA”。对于Unicode来说则正好相反。如果将EntryPoint设置为“MyMethod”且它存在的话,则返回“MyMethodW”。如果DLL中不存在“MyMethodW”,但存在“MyMethod”,则返回“MyMethod”。如果使用的是Auto,则匹配规则与平台有关(在WindowsNT上为Unicode,在Windows98上为Ansi)。如果ExactSpelling设置为true,则只有当DLL中存在“MyMethod”时才返回“MyMethod”。,.,Windows数据类型,.,键码值,数据类型,.,3,ISWINDOWSAPICode,.,/锁定系统/DllImport(user32.dll)privatestaticexternboolLockWorkStation();,/锁定键盘鼠标输入但不锁定ctr+alt+delete/DllImport(user32.dll)privatestaticexternboolBlockInput(boolfBlockIt);privatevoidskinButton29_Click(objectsender,EventArgse)boolresult=BlockInput(true);if(result=false)thrownewWin32Exception(Marshal.GetLastWin32Error();,/根据鼠标位置信息得到鼠标下窗体的句柄值DllImport(user32.dll)privatestaticexternIntPtrWindowFromPoint(Pointp);DllImport(user32.dll)privatestaticexternintGetClassName(IntPtrhWnd,StringBuilderlpClassName,intnMaxCount);privatevoidskinButton21_Click(objectsender,EventArgse)Pointp;GetCursorPos(outp);inthwnd=WindowFromPoint(p);IntPtrhandle=(IntPtr)hwnd;StringBuildersb=newStringBuilder(256);GetClassName(handle,sb,sb.Capacity);MessageBox.Show(sb.ToString();,/设置鼠标坐标基于屏幕DllImport(user32.dll)privatestaticexternboolSetCursorPos(intx,inty);privatevoidskinButton3_Click(objectsender,EventArgse)SetCursorPos(10,10);,.,DllImport(user32.dll)privatestaticexternIntPtrGetActiveWindow();/获得当前活动窗体DllImport(user32.dll)publicstaticexternboolSetForegroundWindow(IntPtrhWnd);/设置窗体获得焦点DllImport(user32.dll)publicstaticexternIntPtrGetForegroundWindow();/得到当前获得焦点的窗口句柄DllImport(user32.dll)导入模拟键盘的方法,第一个值为虚拟键值,第二个参数为扫描不设置,为0,第三个数为按键状态选项keydown为0,如果为keyup则设置成,KEYEVENT_KEYUP,第四个参数一般为0publicstaticexternvoidkeybd_event(bytebVk,bytebScan,intdwFlags,intdwExtraInfo);privatevoidskinButton10_Click(objectsender,EventArgse)IntPtrRevit=GetActiveWindow();SetForegroundWindow(Revit);keybd_event(0 x1B,0,0,0);keybd_event(0 x1B,0,2,0);keybd_event(0 x1B,0,0,0);keybd_event(0 x1B,0,2,0);DllImport(user32.dll)privatestaticexternIntPtrGetDesktopWindow();/获得桌面句柄,.,DllImport(user32.dll)publicstaticexternIntPtrFindWindow(stringClassName,stringWindowNamw);DllImport(user32.dll)publicstaticexternintGetWindowText(inthWnd,StringBuilderlptext,intnCount);DllImport(user32.dll)publicstaticexternintEnumWindows(CALLBACKcall,intlParam);publicdelegateboolCALLBACK(inthwnd,intlparam);DllImport(user32.dll)publicstaticexternboolEnumChildWindows(IntPtrwindow,EnumWindowProccallback,IntPtrlparam);publicdelegateboolEnumWindowProc(IntPtrhWnd,IntPtrparameter);DllImport(user32.dll)publicstaticexternintSendMessage(IntPtrhWnd,intMsg,IntPtrwParam,intlParam);DllImport(user32.dll)publicstaticexternIntPtrFindWindowEx(IntPtrhwndParent,IntPtrhwndChildAfter,stringlpszClass,stringlpszWindow);,.,classpropertyButtonDllImport(user32.dll)publicstaticexternIntPtrFindWindow(stringClassName,stringWindowNamw);DllImport(user32.dll)publicstaticexternintGetWindowText(inthWnd,StringBuilderlptext,intnCount);DllImport(user32.dll)publicstaticexternintEnumWindows(CALLBACKcall,intlParam);publicdelegateboolCALLBACK(inthwnd,intlparam);DllImport(user32.dll)publicstaticexternboolEnumChildWindows(IntPtrwindow,EnumWindowProccallback,IntPtrlparam);publicdelegateboolEnumWindowProc(IntPtrhWnd,IntPtrparameter);DllImport(user32.dll)publicstaticexternintSendMessage(IntPtrhWnd,intMsg,IntPtrwParam,intlParam);DllImport(user32.dll)publicstaticexternIntPtrFindWindowEx(IntPtrhwndParent,IntPtrhwndChildAfter,stringlpszClass,stringlpszWindow);publicconstintWM_CLICK=0 x00f5;publicstaticIntPtrRevit=IntPtr.Zero;publicstaticIntPtrEdit=IntPtr.Zero;,.,publicstaticintSetEdit()CALLBACKcb=BackCa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年年银项目规划申请报告
- 2025年稀土储氢材料项目申请报告范文
- 2025年特种作业类特种设备作业-大型游乐设施修理Y1参考题库含答案解析
- 2025年特种作业类危险化学品安全作业过氧化工艺作业-氟化工艺作业参考题库含答案解析
- 2025年广东省深圳市九年级中考阅读理解集训含答案
- 2025年环保船项目申请报告
- 2025年特种作业类危险化学品安全作业化工自动化控制仪表作业-化工自动化控制仪表作业参考题库含答案解析
- 专题05 金属和金属矿物(河北专用)5年(2021-2025)中考1年模拟《化学》真题分类汇编
- 辽宁沈阳中考数学试卷
- 南京到河北中考数学试卷
- 2025年度中国对非洲二手车出口及非洲重点进口国分析白皮书-特易资讯-2025
- 马凳筋专项方案
- 厂房临时用电施工方案
- 成人术后口渴症状评估与管理专家共识
- 模块化建筑快速搭建系统行业跨境出海战略研究报告
- 医疗部门安全生产责任制范文
- 公园休闲座椅施工方案
- 气管切开非机械通气患者气道护理团体标准课件
- NES-3000 ECDIS电子海图显示与信息系统操作手册
- 2025年度船舶建造项目总承包合同4篇
- 基层卫生院慢病管理
评论
0/150
提交评论