语言程序设计资料:WinForm项目实战(c_)定时关机_,媒体播放器,照片小管家,网络扫描器,俄罗斯方块,简易IE浏览器修复器

上传人:M****1 文档编号:486053635 上传时间:2023-04-25 格式:DOC 页数:156 大小:5.08MB
返回 下载 相关 举报
语言程序设计资料:WinForm项目实战(c_)定时关机_,媒体播放器,照片小管家,网络扫描器,俄罗斯方块,简易IE浏览器修复器_第1页
第1页 / 共156页
语言程序设计资料:WinForm项目实战(c_)定时关机_,媒体播放器,照片小管家,网络扫描器,俄罗斯方块,简易IE浏览器修复器_第2页
第2页 / 共156页
语言程序设计资料:WinForm项目实战(c_)定时关机_,媒体播放器,照片小管家,网络扫描器,俄罗斯方块,简易IE浏览器修复器_第3页
第3页 / 共156页
语言程序设计资料:WinForm项目实战(c_)定时关机_,媒体播放器,照片小管家,网络扫描器,俄罗斯方块,简易IE浏览器修复器_第4页
第4页 / 共156页
语言程序设计资料:WinForm项目实战(c_)定时关机_,媒体播放器,照片小管家,网络扫描器,俄罗斯方块,简易IE浏览器修复器_第5页
第5页 / 共156页
点击查看更多>>
资源描述

《语言程序设计资料:WinForm项目实战(c_)定时关机_,媒体播放器,照片小管家,网络扫描器,俄罗斯方块,简易IE浏览器修复器》由会员分享,可在线阅读,更多相关《语言程序设计资料:WinForm项目实战(c_)定时关机_,媒体播放器,照片小管家,网络扫描器,俄罗斯方块,简易IE浏览器修复器(156页珍藏版)》请在金锄头文库上搜索。

1、WinForm项目实战西安航空技术高等专科学校编著:计算机系 齐亚平 任静2009年12月前言本书专门为WinForm项目实战编写。以实例的方式讲解书中就涉及到的有关知识。所有项目均在.NET2005下调试通过。可以选作任意2个项目作为项目实战。西安航空技术高等专科学校齐亚平编写本书的第1、2、4章、任静编写第3、5章,李川、王建、赵琳、李中参与编写。 2010-1-18目录第1章 定时关机11.1 实例简介11.2 必备知识11.2.1 一个简单的API函数调用11.2.2 关机相关的API函数和导入方法21.2.3日期/时间DateTimePicker控件61.2.4 添加图标到系统托盘8

2、1.2.5计时器Timer控件101.3 项目实训设计思路121.3.1 设计思路121.3.2 界面设计121.3.3 调用API函数实现关机的基本流程131.4项目实训设计实现141.4.1 创建工程并完成相关设置141.4.2 添加ExitWindows类并完成类的设计171.4.3 AwokeForm提醒窗体的全部设计201.4.4 定时关机ShutDone主窗体的全部设计22小结26课后作业27第2章 媒体播放器292.1 实例简介292.2 必备知识292.2.1 OpenFileDialog292.2.2 Windows Media Player 控件312.2.3 TrackB

3、ar342.2.4 Process362.3 设计思路372.3.1 界面设计372.3.2播放器实现的基本原理382.4 设计实现382.4.1 WMP控件检测382.4.2 播放状态422.4.3播放控制432.4.4 获取媒体信息462.4.5 音量控制与进度条472.4.6 播放列表492.4.7 XP样式界面49小结50课后作业50第3章 照片小管家513.1 实例简介513.2 必备知识513.2.1 图片显示513.2.2 动态数组ArrayList的使用技巧533.2.3 TreeView与ArrayList配合使用533.2.4 图片的分类显示543.3 设计思路553.3.

4、1 界面设计553.3.2 程序实现的基本原理563.4 设计实现583.4.1 自定义存放图片信息的类583.4.2 添加所需的事件方法593.4.3 读取和保存图片的分类信息和图片信息593.4.4 添加图片分类61623.4.5 添加图片路径到一个图片分类中623.4.6 删除一个图片分类63653.4.7 删除一个路径信息653.4.8 图片显示6667小结67课后习题67第4章 网络扫描器694.1 实例简介694.2 必备知识694.2.1 System.Net.Sockets简介694.2.2 ListBox的内容自动上滚实现技巧704.2.3 端口简介704.2.4 线程简介7

5、14.3 设计思路734.3.1 界面设计734.3.2 特殊控件说明744.3.3 控件Timer744.3.4 控件ProgressBar744.4 设计实现754.4.1 动态线程实现754.4.2 IP与端口的遍历764.4.3 “开始” 按钮功能实现784.4.4 “停止”按钮功能实现814.4.5 “暂停”按钮功能实现824.4.6 计时功能82小结83课后习题83第5章 俄罗斯方块855.1 实例简介855.2 必备知识855.2.1二维数组855.2.2 Gdi+865.2.3随机数生成器875.2.4 PictureBox控件885.3 设计思路895.3.1 界面设计895

6、.3.2俄罗斯方块实现的基本原理905.4 设计实现905.4.1 游戏状态GameState枚举型905.4.2 方块类型BlockType枚举型915.4.3 基本正方形Square结构体915.4.4 俄罗斯方块类Block925.4.5 主游戏类TerisGame965.4.6 游戏主窗体101小结105课后作业105第6章 简易IE浏览器修复器1076.1实例简介1076.2必备知识1076.2.1 注册表基础1076.2.2 注册表基本操作1096.3 设计思路1106.3.1 界面设计1106.3.2 实现修改注册表立刻生效1126.3.3 在主窗体中修改从窗体属性。1126.4

7、 设计实现1126.4.1添加窗体所需的事件方法1136.4.2 修复原理窗体ShowMessage的代码设计1136.4.3主界面窗体Repair的代码设计114小结123课后作业123附录1 WinForm Control 命名规范125附录2常用注册表功能127第1章 定时关机知识点: API的基本概念和使用方法。 日期/时间DateTimePicker控件的使用方法。 系统托盘的编程。 计时器Timer控件的使用方法。本章编写说明:和其他章节比较,本章对操作的步骤有较为详细的说明,这是考虑到不同层次读者的需要。在其他章节有对操作步骤不太理解的地方,可参阅本章的内容。1.1 实例简介在许

8、多应用程序中都涉及到重启、或关机等功能,.NET 2003目前没有封装这些功能,利用API完成一个关机功能的程序以及对系统托盘的编程操作对许多应用程序是必需有的功能。本章将通过一个定时关机程序,详细描述实现过程。1.2 必备知识下面通过小例了解和掌握本章的知识点:1.2.1 一个简单的API函数调用1. API基础API(Application Programming Interface)是应用编程接口,是程序与处理器接口的命令集。Win32 API可以直接控制Microsoft Windows的核心(Win32代表为32位处理器开发的),是微软留给程序开发者直接控制Windows的接口。Wi

9、n32 API函数存放在动态链接库DLL文件中,常用的API在下面3个库中得以运行,分别是KERNEL32、USER32和GDI32。表1-1 API函数功能和动态链接库的关系Win32动态链接库文件名功能主要功能举例KERNEL32.DLL主要用于产生与操作系统之间的关联程序加载、上下文选择 ,文件输入输出, 内存管理USER32.DLL允许管理全部的用户接口窗口、 菜单 、对话框、图标等GDI32. DLL图形输出库“画”出窗口、菜单以及对话框等.NET 组件就是封装了相关的API,有些功能还没有封装,就需要程序开发者直接调用API;需要了解一些API调用的基本知识,下面通过一个实例了解如

10、何用.NET平台上的C#语言来调用Win32平台上的DLL文件。2. 通过API直接调用MessageBox(1) 创建一个名为“通过API直接调用MssageBox”的Windows应用程序项目(2) 添加一个Button按钮,采用默认属性值,其中Name属性值为button1(3) 需要引用外来库,所以必须导入一个Namespace:using System.Runtime.InteropServices;(4) 添加代码来声明一个API(在属性和字段定义的位置)DllImport(User32.dll) public static extern int MessageBox(int h,

11、 string m, string c, int type); 此处DllImport属性被用来从不可控代码中调用一方法。”User32. DLL”则设定了类库名。DllImport属性指定DLL的位置,这个DLL中包括调用的外部方法。Static修饰符则声明一个静态元素,而这个元素属于类型本身而不是上面指定的对象。extern则表示这个方法将在工程外部执行,使用DllImport导入的方法必须使用extern修饰符。MessageBox 则是函数名,拥有4个参数,其返回值为数字。(5) 添加button1的Click事件的处理方法,并添加代码如下:private void button1_C

12、lick(object sender, System.EventArgs e)MessageBox (0,显示的信息,API直接调用MessageBox,0);MessageBox 4个参数的含义如下:第一个:弹出的MessageBox的父窗口是谁。本例中没有,所以是0,也就是“空指针”。第二个:MessageBox的内容。本例中是“显示的信息”。第三个:MessageBox的标题。本例中是“API直接调用MessageBox”第四个:MessageBox上的按钮是什么,是0,只有一个确定(6) 运行程序,单击“button1”结果如图1-1所示图1-11.2.2 关机相关的API函数和导入方

13、法本小节涉及到了API函数的细节,需要一些相关的知识才能完全理解这些函数的作用。本小节的内容适合查阅使用。1. 自定义的结构体TokenPrivilegeLuid为了匹配API函数在调用时相互之间的传值的要求,需要自定义一个向非托管函数之间相互传递值的结构体。只有类具有固定的成员布局,就可以将类的成员传递给非托管的 DLL 函数。使用如下方法可以实现:StructLayout(LayoutKind.Sequential, Pack=1)StructLayout可以使数据依照程序设计者的意愿来排列或打包,LayoutKind.Sequential表示按照结构体定义的顺序排列数据 Pack = 1

14、表示结构体按一个字节对齐。结构体的名称为TokenPrivilegeLuid,其含义为“令牌权限Luid”,Luid 的含义为 locally unique identifier,是Windows系统保证局部唯一的标志,就是指在系统的每一次运行期间保证是唯一的值。结构体的定义如下:StructLayout(LayoutKind.Sequential, Pack=1) internal struct TokenPrivilegeLuid /确定权限数组元素的个数public int PrivilegesCount; /这里定义存放权限的Luidpublic long PrivilegesLuid; /权限属性public int PrivilegesAttributes; 2. 获取当前进程句柄的函数函数名: GetCurrentProcess()参数:无返回类型:System.IntPtr,这里给出了在.C#.NET平台下对应

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号