电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

Windows开发

来源:漫步者作者:开心麻花2025-09-191

Windows开发(精选9篇)

Windows开发 第1篇

蓝牙 (Bluetooth) 是一种支持设备短距离通信的无线电技术, 能在包括移动电话、PDA、无线耳机、笔记本电脑以及相关外设等众多设备之间进行无线信息交换。蓝牙采用分散式网络结构以及快跳频和短包技术, 支持点对点和点对多点通信, 工作在全球通用的2.4GHz ISM (即工业、 科学、医 学 )频段, 其数据速率为1Mb/s, 采用时分双工传输方案实现全双工传输, 使用IEEE802.15协议。根据发射输出电平功率不同,蓝牙传输有3种距离等级: Class1为100m左右; Class2约为10m; Class3约为2-3m。

接下来将通过开发一个程序实例, 讨论在Windows系统下, 两台PC机通过蓝牙进行文本信息收发和文件传输的通信程序设计方法。程序 的开发运 行环境为 : VS2008、WindowXP SP3、蓝牙适配器。

2 蓝牙协议栈

协议栈是指一组协议的集合, 蓝牙协议栈是SIG (SpeciaInterest Group) 定义的一组协议的规范 , 目标是允许遵循规范的蓝牙应用能够进行相互间操作。蓝牙协议栈如图1所示。

目前在Windows平台上实现的蓝牙协议栈主要如下:

( 1) Widcomm: 第一个Windows上的协议 栈 , 由Widcomm公司开发 , 也就是现在的Broadcom。

(2) Blue Soleil: 由IVT公司开发 , 可用于桌面和嵌入式系统。

(3) Microsoft Bluetooth Stack: 由微软公司开发 , 在Windows XP SP2及以上版本中内建的协议栈。

上面这些协议栈都提供了SDK开发包, 开发者可以使用开发包提供的API开发自己的蓝牙应用。但是这些协议栈之间存在兼容性问题, 开发者必须针对具体的协议栈进行开发。由于微软的蓝牙协议栈已经内建在系统中, 所以一般选择Microsoft Bluetooth Stack来进行开发。开发者可以使用微软SDK中的Microsoft Bluetooth API, 也可以使用Win Sock, 二者都能实现蓝牙设备的查找、服务的发现、配对等。由于大部分蓝牙设备都提供虚拟串口服务, 所以可以使用系统中的虚拟串口进行数据通信, 也可以使用网络编程、服务器监听或客户端连接的方式来进行数据通信。

在VS2008中包含了 开发蓝牙 应用的SDK, 但是在VS2008以前的版本中 , 如VS2005、VC++6.0等 , 没有包含蓝牙SDK, 需要安装微软提供的Platform SDK。对于VC++6.0,最后一个 受支持的Platform SDK是2003年2月版。对 于VS2005, 可以安装Windows Server 2003 R2 Platform SDK, 其完整的文件名是5.2.3790.2075.51.Platform SDK_Svr2003R2_rtmimg, 文件大小是409MB左右 , 可以将文件名后缀img直接改成iso。

3 蓝牙通信程序设计

程序使用网络编程的方式, 采用服务器/客户端模式来进行蓝牙数据通信。客户端的执行流程是:(1) 搜索本地蓝牙设备, 即扫描本机上的蓝牙设备并显示;(2) 搜索远程蓝牙设备, 即扫描本机附近的蓝牙设备并显示;(3) 创建客户端套接字;(4) 发送连接请求, 连接选定的服务器, 即远程蓝牙设备;(5) 开始通信, 传输文件或收 发文本信 息 ;(6)断开连接, 客户端向服务器发送或收到服务器发送的断开连接请求时 , 即可实现 通信的断 开。服务 器的执行 流程是 :(1) 搜索本地蓝牙设备 , 即扫描本机上的蓝牙设备 并显示 ;(2) 创建服务器套接字 ; (3) 绑定套接字到本地蓝牙设备 ;(4) 建立连接 , 使用listen函数开始监听远程设备的连接 请求, 使用accept函数接受连接并返回一个用来与客户端通信的套接字;(5) 开始通信, 传输文件或收发文本信息; (6)断开连接, 服务器向客户端发送或收到客户端发送的断开连接请求时, 即可实现通信的断开。程序的运行界面截图如图和图3所示。

程序实现了服务器和客户端的功能, 将服务器和客户端做在同一个对话框界面上, 使用时用户可以选择服务器模式或者客户端模式, 也可以同时使用服务器模式和客户端模式。程序中除了主线程之外, 还设置了5个子线程, 分别是服务器监听线程、服务器接收数据线程、服务器发 送文件线 程、客户端接收数据线程和客户端发送文件线程。采用子线程方式, 可以很好地改善主线程的人机交互体验。

需要注意的是, 由于使用的是微软 实现的蓝 牙协议栈 ,所以蓝牙适配器的驱动应该 使用Windows系统自带 的驱动 ,不能使用第三方的蓝牙驱动。

4 关键代码实现

要使用Microsoft Bluetooth API进行蓝牙开发, 首先需要包含相关的头文件和导入库, 代码如下:

还要在程序开始时, 执行一次Win Sock库的初始化, 在程序结束时, 相应执行一次Win Sock库的清理, 代码如下:

4.1搜索本地蓝牙设备

搜索本机的蓝牙设备并显示, 代码如下:

4.2搜索远程蓝牙设备

搜索本机附近的蓝牙设备并显示, 代码如下:

4.3启动本地蓝牙设备

启动本地蓝牙设备作为服务器, 响应远程客户端的连接,代码如下:

4.4连接远程蓝牙设备

本机蓝牙设备作为客户端, 连接远程服务器设备, 代码如下:

4.5服务器发送信息

在服务器模式, 发送信息给客户端, 代码如下:

4.6客户端发送信息

在客户端模式, 发送信息给服务器, 代码如下:

4.7服务器发送文件

在服务器模式, 发送文件给客户端, 采用线程方式, 代码如下:

4.8客户端发送文件

在客户端模式, 发送文件给服务器, 采用线程方式, 代码如下:

4.9服务器监听线程

监听并接受客户端的连接请求, 代码如下:

4.10服务器接收信息线程

接收客户端发来的文本信息和文件数据, 代码如下:

4.11服务器发送文件线程

发送文件数据到客户端, 代码如下:

4.12客户端接收信息线程

接收服务器发来的文本信息和文件数据, 代码如下:

4.13客户端发送文件线程

发送文件数据到服务器, 代码如下:

5结语

讨论了在Windows系统下, 使用Microsoft Bluetooth API,实现两台PC机之间通过蓝牙进行文本信息收发和文件传输的程序设计方 法 , 并用VC++2008编写程序 实例 , 在WindowsXP SP3和Win8.1下测试通过。

摘要:探讨了在Windows系统下,使用Microsoft Bluetooth API实现两台PC机之间通过蓝牙进行文本信息收发和文件传输的程序设计方法,并用VC++2008编写程序实例,在Windows XP SP3和Win8.1下测试通过。

Windows开发 第2篇

上一篇文章述了如何使用MediaElement控件来播放网络电台,讲述了MediaElement控件支持的媒体文件格式以及其一些限制性,同时讲述了Slider控件的使用和数据绑定的方法,这篇文章讲述如何使用Silverlight进行动画的开发。

新增图片和配置文件

我使用Paint.net做了些电台的(徽标)logo文件,存放在Images文件里面。

我把电台的配置信息保存到XML文件里面,以后可以通过修改该XML文件来扩展电台信息,提高可扩展性。甚至可以把配置文件存放到网上,程序每次启动的时候自动更新。

Stations标签是各个Station标签的容器,id是电台的唯一标识,name是电台的名字,url是在线播放的地址,不确定是否为模拟器 的原因,我试过网络电台只是支持mp3格式,我想在真机会像官方文档所说那样支持多种格式,所有支持的媒体文件格式请看上篇文章。image是电台的 logo图片文件的名字,存放在上述的Images文件夹下面。

把Config和Images文件夹拷贝到项目文件夹下面,然后把文件加入到项目中

先点击“Show All Files”按钮,然后右击Config和Images文件夹,选择“Include In Project”菜单。

需要注意的是,需要检查这些文件的属性,例如SilverRadio.xml文件的属性如下:

Logo图片文件的属性如下:

注意XML文件和Logo图片的文件属性不一样的,我发现新增文件的时候,Silverlight for Windows Phone已经自动设置好,不需要改动。但是我做Silverlight 4的时候,需要手工改动相应的属性,XML的Build Action为Content,而图片的为Resource。还有一个需要注意的是Silverlight不支持Embedded Resource,第一眼会觉得嵌入资源(Embedded Resource)比资源文件(Resource)更加贴切(我自己开始这样认为),可是Silverlight不支持这种文件形式,这种形式只支持在 WPF使用,但是Silverlight的Build Action保留了好多不支持的文件形式的选项,使用时需要注意哪些是Silverlight支持的,否则程序会出现找不到文件等异常错误。

LINQ for XML读取配置文件

使用LINQ读取XML配置文件,先定义一个实体类如下:

public class Station

{

public int Id { get; set; }

public string Name { get; set; }

public Uri Url { get; set; }

public string Image { get; set; }

}

下面是电台容器类Stations

public class Stations : List

{

public void Load(string xmlFile)

{

XDocument xDoc = XDocument.Load(xmlFile);

var query = from xElem in xDoc.Descendants(“station”)

select new Station

{

Id = Convert.ToInt32(xElem.Attribute(“id”).Value),

Name = xElem.Attribute(“name”).Value,

Url = new Uri(xElem.Attribute(“url”).Value, UriKind.Absolute),

Image = xElem.Attribute(“image”).Value,

};

Clear();

AddRange(query);

}

}

关于容器类的命名

我喜欢使用名词加上s作为容器类的名称,之前写blog过程中,有好几个读者说名词加s不好理解,我想是由于中文的名词没有复数的缘故,但是我看过 一些.NET Framework的源码,容器类也是使用名称加s的方式表示,习惯就好了,使用加s(例如Stations)而不是加上具体容器的名称(例如 StationList)的好处是重构容器类型的时候不需要修改容器的名称,

因为具体容器可能会修改,例如从List修改为Dictionary,但是可 以继续保留原有容器的名称Stations。

LINQ for XML

LINQ for XML主要有三个关键的类组成XDocumentXElement和XAttribute。我觉得弄明白这三个类已经能入门LINQ for XML了。XDocument表示XML文档,调用静态函数Load就可以把文档加载到XDocument的对象中。XElement表示一个元素(节点),通过XElement的属性Attribute(容器)就能取出该节点的相关属性。XAttribute表示节点的属性。,

在上述例子中把Station的每个节点取出来,然后把属性值传递给新建的Station对象。最后把所有Station对象存放到List容器中。

图片转盘的实现

先看效果图,有了感性认识比较好理解最终的实现效果。这是一个使用动态图片转盘的方式呈现所有电台,效果见上图,用户可以转动的方式换电台,选中的 电台会显示在最中间和最前方,显示最大比例,其他图根据与选中图的距离按比例缩小,模拟3D转盘的效果。下面详细讲述这个转盘类的实现。这个类的实现参考 了Flash vs Silverlight: Image Carousel.

XAML

xmlns=“schemas.microsoft.com/winfx/2006/xaml/presentation”

xmlns:x=“schemas.microsoft.com/winfx/2006/xaml”

Width=“480” Height=“300”>

Windows开发 第3篇

Visual FoxPro不但是一个优秀的桌面数据库管理软件,而且是一种简单的计算机程序设计语言,它既支持标准的面向过程的程序设计方法,又采用了当前主流的面向对象的可视化程序设计方法[1,2],大大简化了应用程序的开发过程,可以帮助用户开发出功能完善、灵活多变的应用程序。本文就是利用Visual FoxPro来开发Windows的记事本,在实现的过程中,结合多年的实践教学经验,提出了不同表单间引用对象的新方法。本文内容既可作为Visual FoxPro教学时指导学生上机实践的综合实例,也可在实际应用系统开发的过程中加以参考利用。

1 应用程序的功能模块

在开发应用程序之前,从记事本的功能方面考虑,将问题分解为三个模块:文件的存取、文本的编辑、文本的格式化,功能模块如图1所示。

1.1 文件的存取

文件的存取利用Visual FoxPro提供的相关文件函数getfile()、putfile()、fopen()、fseek()、fread()、fcreate()、fwrite()、fclose()及自定义方法程序实现。

1.2 文本的编辑

利用自定义方法程序及有关表单实现文本的编辑功能。在实现“查找”与“替换”功能时提出了不同表单间引用对象的新方法,即通过“表单文件名.对象名”来引用对象,此方法比定义全局变量或创建表单集在不同表单间引用对象更方便快捷[3,4]。

1.3 文本的格式化

利用Visual FoxPro提供的函数getfont()、getcolor()及自定义方法程序实现文本字体及颜色的设置。

2 应用程序的实现

实现上述功能的记事本,需要设计三个表单和一个菜单。首先在Visual FoxPro中创建一个项目文件(notepad.pjx),然后依下列步骤进行设计。

2.1 设计“记事本”表单(notepad.scx)

“记事本”表单是应用程序的主界面,该表单包含一个处理文本的编辑框和一个SDI菜单。

第1步:在项目中新建表单,并在表单中添加1个编辑框,设置其HideSelection属性为.F.。

第2步:在代码窗口编写表单的Init事件代码,主要用来动态调整界面及调用菜单。

Init的事件代码:

第3步:为实现记事本的功能,创建多个自定义方法程序。

(1)文件存取的自定义方法程序及代码。

(2)文本编辑的自定义方法程序及代码。

(3)文本格式化的自定义方法程序及代码。

第4步:保存并关闭表单文件“notepad.scx”。

2.2 设计“查找”表单(find.scx)

“查找”表单是在执行记事本的“编辑|查找”命令时打开的一个操作界面,主要用于对编辑框中的文本进行查找。

第1步:在项目中新建表单,并在表单中添加1个文本框,1个标签,3个命令按钮。

第2步:设置表单及控件的属性如表1所示。

第3步:在代码窗口编写事件代码。

第4步:保存表单文件“find.scx”,其运行界面

2.3 设计“替换”表单(replace.scx)

“替换”表单是在执行记事本的“编辑|替换”命令时打开的一个操作界面,主要用于对编辑框中的文本进行查找与替换。

第1步:在项目中新建表单,并在表单中添加2个文本框,2个标签,4个命令按钮。

第2步:设置表单及控件的属性如表2所示。

第3步:在代码窗口编写事件代码。

(1)Command1(查找)和Command4(取消)的Click事件代码与“find.scx”中的相同。

(2)Command2(替换)的Click事件代码:

(3)Command3(全部替换)的Click事件代码:

第4步:保存表单文件“replace.scx”,其运行界面如图3所示。

2.4 设计“记事本”菜单(notepad.mpr)

“记事本”菜单通过设计菜单项目,调用自定义方法程序及表单,实现记事本的基本功能。

第1步:在项目中新建SDI菜单,定义菜单各选项的名称及结果如表3所示。

第2步:选择“显示|常规选项”命令,打开“常规选项”对话框,选中“顶层表单”选项。

第3步:保存菜单文件“notepad.mnx”,选择“菜单|生成”命令,生成菜单程序文件“notepad.mpr”。

2.5 在表单中添加菜单

第1步:打开表单文件“notepad.scx”,设置表单的“ShowWindow”属性为“2作为顶层表单”。

第2步:将创建好的SDI菜单“notepad.mpr”附加在顶层表单中,即在顶层表单的init事件中添加如下代码即可实现。

do notepad.mpr with this,.T.

第3步:保存并运行表单,记事本的运行界面如图4所示。

以上代码均在Windows XP Profession,Visual FoxPro6.0下调试通过,由于篇幅所限,其他功能有待进一步完善。

3 结束语

本文介绍了如何在Visual FoxPro中开发Windows记事本的方法和步骤,在实现过程中,提出了用“表单文件名.对象名”在不同表单间引用对象的新方法。从程序代码可以看出,Visual FoxPro除了用作数据库管理软件外,它也是一种语法简单、使用灵活的程序设计语言。

摘要:介绍了利用Visual FoxPro提供的文件函数及自定义方法程序开发Windows记事本的方法和步骤,在实现的过程中,提出了不同表单间引用对象的新方法。文中内容既可作为Visual FoxPro教学时指导学生上机实践的综合实例,也可在实际应用系统开发的过程中加以参考利用。

关键词:Visual FoxPro,文件函数,自定义方法程序,表单,菜单,记事本

参考文献

[1]李玉龙,张永花,蒲会兰.Visual FoxPro程序设计与数据库应用基础[M].北京:中国铁道出版社,2007.

[2]卢湘鸿.Visual FoxPro 6.0数据库与程序设计[M].北京:电子工业出版社,2005.

[3]张宏丽,王海凤.VFP程序设计中对象的引用方法[J].内蒙古电大学刊,2003,5(57):52-53.

Windows开发 第4篇

来自PCBeta论坛的消息,就在Windows Blue已经进入开发阶段时,Windows 9也已经进入了Alpha开发阶段,新版本号为Build 9622,

Windows 9已经入开发阶段 延用Win8界面

Win9仍将使用Win8界面

据称,Windows 9将同样延续Windows 8的用户界面,而且还将更加扁平化,因此Win7上的Aero特效可能是很难回归了。而Windows 9的系统核心则将发生一些变化。

Windows开发 第5篇

而Windows 10最大的亮点之一,就是让开始菜单全面回归。但是融入的Windows 8开始屏幕的磁贴,却让很多人觉得非常的不舒服。那么有没有什么方法管理好这些磁贴呢?

如果用户不喜欢某个应用图标的话,可以通过鼠标左键按住应用图标,将其拖到开始菜单中释放即可。如果用户不需要使用任何应用,那么只需要按照前面的方法将应用图标全部移动到开始菜单中,这样开始菜单的布局就和 Windows 7的差不多了。

如果用户在开始菜单中有常用的命令,无论是软件程序还是应用,都可以通过鼠标左键将图标拖到开始屏幕中释放固定,这样就可以方便以后进行快速的调用。其实,开始桌面中的某些应用还是非常有用的,比如天气预报的应用。

如果用户不喜欢磁贴的方式,那么可以在开始菜单里面找到“天气”应用,接着将其拖放到系统桌面中释放,就可以创建一个应用的快捷方式。

2 回归窗口 操作更灵活

对Windows 8其他的诟病还包括应用的使用,因为用户需要不停地在两个桌面之间切换。虽然从Windows 8.1 Update 1开始,微软在应用的使用上已经有所改变,比如应用开始可以进行窗口化操作,但是当时的修改还是属于小打小闹。而在Windows 10系统中,应用窗口的变化是巨大的。当用户点击开始菜单中某一个应用命令后,就可以像软件程序一样启动这个应用。接下来用户可以像对普通的软件窗口那样,对应用窗口进行任意的操作,比如最大化、最小化、关闭以及窗口的任意缩放等(图3)。

另外,微软从Windows 7系统开始,便引入了“屏幕热区”这个概念,那时只需要将窗口直接拖拽到屏幕两边,窗口就可以快速缩放至屏幕1/2尺寸大小。而在Windows 10中,用户会发现这项功能被大大的加强了。除了左、右、上这三个热区外,还可以拖拽至左上、左下、右上、右下四个边角,从而实现窗口的1/4分屏操作。这个技巧无论是对什么窗口都适用,包括这次有重大改进的应用窗口。不过我们在测试的时候也发现了一个问题,那就是分屏后的窗口再拖拽回来后窗口大小无法复原,而之前的Windows系统版本都是可以的。

3 虚拟桌面 Windows 10有了“9条命”

以前要想在多个窗口之间进行切换,需要不停地使用Alt+Tab或者Alt+Shift+Tab这样的快捷键。而在Windows 10里面点击一下快速启动栏中的“Task View”按钮,就会发现当前系统的所有任务窗口,以预览框的形式显示在窗口正中。这样我们就可以通过鼠标选择,快速在多个窗口之间进行切换,这样可比用快捷键方便多了。

除此以外,在点击“Task View”功能按钮后,还可以在屏幕下方看到一个名为“添加桌面”的按钮(图4)。当点击“添加桌面”按钮后,可以创建一个全新的系统桌面。这样无论是家人还是朋友,在使用系统的时候就不会出现互相干扰的情况了。经过测试发现,Windows 10系统可以创建最多9个虚拟桌面。当不再需要使用某个桌面的时候,点击“Task View”后,在下方的显示条中找到该桌面的缩略图,然后点击右上角的关闭按钮即可。

4 搜索不分家 本地/网络一网打尽

点击快速启动栏中的“搜索”按钮,在窗口的下方输入关键词,就可以在本地磁盘与必应搜索引擎里面同时进行搜索(图5)。当点击搜索到的文件就可以马上打开运行它,在文件上单击鼠标右键,点击菜单中的“打开文件位置”命令,还可以自动跳转到文件所在地文件夹目录。不过在测试时也发现了一个相应的Bug,就是输入框和第三方输入法不兼容,哪怕是微软自己的必应输入法也不行,只能用系统自带的输入法才可以,有些不便。

除此以外,我们在搜索本地文件的时候,会发现很多文件无法搜索到。其实这和系统中索引的文件夹目录有关,我们可以自定义添加想要索引的目录。首先进入到系统的控制面板,在右上角的搜索框输入“索引”找到该功能。在打开的“索引选项”设置框中,点击“修改”按钮后在“更改所选位置”列表中,勾选需要进行文件内容索引的目录。设置完成以后点击“确定”按钮,系统就开始进行索引操作了。不过系统的索引速度比较慢,并不能马上就出结果的。

Windows开发 第6篇

1 Virtual Box内部结构

Virtual Box虚拟机的最底层次是虚拟机管理层 (hypervisor) , 它运行在操作系统核心模式中, 可以直接访问内存、硬盘等的物理设备。它为运行的虚拟机协调分配物理资源, 控制着虚拟机的执行。

在虚拟机管理层 (hypervisor) 的之上, 提供其他功能服务的附加模块。例如:资源监视器、RDP服务端等。在这些附加模块之上, 是Virtual Box的Main API层。Virtual Box开放了API接口并提供了多种调用方式用于编程, 通过API可以对虚拟机进行创建、设置、启动、关闭及删除的操作, 也可以获取虚拟机的性能统计信息等等。

在Virtual Box的上层部分, 包含了Virtual Box GUI、Webservice等服务, 这些组件用以直接与用户进行交互, 它们同样通过Virtual Box Main API层对虚拟机进行操作。

Virtual Box的组成如图1所示, 从下到上分别表示Virtual Box虚拟机的底层到表层。

2 Virtual Box SDK介绍

要调用Virtual Box虚拟机的API有两种方式, 其一, 是使用Virtual Box自带的Web Service, 它作为一个HTTP服务器, 通过SOAP协议进行连接处理;其二, 是使用由组建对象模型 (COM) 实现的API进行操作。在Windows操作系统的主机上, Virtual Box使用微软的COM组建。而在其他非Windows操作系统的主机上, 第二种方式的API通过XPCOM来实现。针对使用COM方式的API, Virtual Box提供了支持多种语言的SDK版本, 如Java, C#, C++, Python等。在这里使用Virtual Box虚拟机的基于Python的SDK进行API调用。具体的详细介绍可以参看Virtual Box SDK的参考与指导文档与API文档。

Virtual Box虚拟机的SDK是面向对象的形式的, 在Virtual Box内部的诸如虚拟机, 虚拟机磁盘, 虚拟机网卡等设备在SDK中被抽象为具体的类, 可以通过对应的类方法对它们进行操作与控制。其他参数诸如虚拟机内存大小, 虚拟机显存大小则作为类对象的属性进行控制。

3 Virtual Box虚拟机管理中心系统架构

管理中心系统分为两部分:第一部分是安装于宿主机上用于接收执行指令与反馈信息的服务端, 第二部分是安装于管理机上用于与用户交互并连接与控制服务端的管理中心。整体系统如图2。

服务端运行于宿主机中, 并使用Python调用Virtual Box虚拟机的API执行相应操作。服务端内部分为四个模块:界面模块、socket通讯模块、Virtual Box控制模块、FTP模块。界面模块用于用户交互。socket通讯模块用于与管理中心进行控制命令的发送与接收;Virtual Box控制模块封装了控制操作Virtual Box虚拟机API的函数, 用于直接操作Virtual Box虚拟机;FTP模块用于在服务端上启动FTP服务, 使管理中心可以远程向服务端传送文件。

管理中心运行于管理中心物理机, 是与用户直接交互的部分。其内部分为以下五个模块: (1) 界面模块, (2) socket通讯模块, (3) Virtual Box命令模块, (4) 监控线程模块, (5) 心跳检测模块。其中, 界面模块用于用户交互;socket通讯模块用于与服务端进行控制命令的发送与接收;Virtual Box命令模块用于根据用户在界面上的操作生成对应的控制命令;监控线程模块用于在运行后实时获取虚拟机性能信息;心跳检测模块用于在连接服务端后实时检测服务端的运行与响应状况。

在系统运行时, 先在宿主机上运行服务端程序;然后设定连接密码, 启动服务。服务端的socket通讯模块开始监听对应端口, 等待管理中心的socket发起连接请求。

接着在物理机上启动管理中心端, 打开连接新服务端的窗口, 输入服务端的IP地址与连接密码。管理中心的socket通讯模块通过IP地址开始于与服务端建立连接。一个管理中心端可以同时连接控制10个服务端。

服务端确认连接之后, 验证管理中心的连接密码, 如果验证结果正确, 则正式建立连接。服务端开始等待管理中心发来的命令。

管理中心界面模块根据用户操作, 通过Virtual Box命令模块调用相应通讯命令后, 通过socket通讯模块向服务端发送命令。同时在与服务端的连接建立后, 监控线程模块与心跳检测模块也随之启动, 向服务端实时发送检测与获取性能统计信息的命令。

服务端在建立连接之后开始等待命令, 当收到管理中心发来的命令后, 将命令作为参数传递给Virtual Box控制模块, 使其对Virtual Box虚拟机进行相应的操作控制。最后将返回的处理结果发回管理中心。

4 核心逻辑代码

(1) Virtual Box控制模块使用调用SDK。

导入COM组建的第三方库。

import pythoncom

from win32com import client

然后通过COM组件实例化Virtual Box对象

要进行操作必须要有对应的session对象, 通过COM组建也可以实例化session对象。

session=win32com.client.Dispatch ("Virtual Box.Session")

(2) 通过virtualbox虚拟机实例化对象查询虚拟机相关信息:

machine.Name#查询虚拟机名称, 返回值为字符串类型。

machine.Description#查询虚拟机描述信息, 返回值为字符串类型。

machine.OSType Id#查询虚拟机操作系统设定信息, 返回值为字符串类型。

machine.CPUCount#查询虚拟机CPU分配个数, 返回值为int类型。

machine.CPUExecution Cap#查询虚拟机使用CPU峰值限制, 返回值为int类型, 是CPU使用的的最大百分比。

machine.Memory Size#查询虚拟机内存大小, 返回值int类型, 单位MB。

machine.VRAMSize#查询虚拟机显存大小, 返回值int类型, 单位MB。

machine.State#查询虚拟机电源状态, 返回值int类型, 其值对应vboxapi中Virtual Box_constants参数字典里Machine State的值对应的键的状态。

machine.Get Boot Order (i) #查询虚拟机的启动引导项目, 参数i为int类型, 其范围为0~4。分辨对应第一启动项目与第四启动项目。返回值为int类型, 其值对应vboxapi中Virtual Box_constants参数字典里Device Type的值对应的键的项目。

5 结语

项目完成所有预定的功能, 可以实现通过网络远程部署操作控制虚拟机, 并监控其相关性能信息。通过测试使用, 功能已基本涵盖Virtual Box的常用功能。虚拟机运行稳定, 相关操作控制反馈正常。实测中, 其性能监控与心跳检测连续运行3天未出现异常情况。并且通过进一步扩展, 使得能够使用RDP, 或者VNC协议登录主机控制台, 实现窗口操作。

摘要:本文通过利用Oracle Virtual Box的API进行二次开发, 充分发挥其虚拟机的管理功能, 并扩展其只能在本地管理客户机的功能, 使得可以通过物理网络远程管理多个主机;最终, 使得Virtual Box也可以提供类似于VMware Vsphere类似的云管理平台。本项目依托天津市大学生创业资金, 尝试在Windows7环境下开发一套虚拟机管理中心。

Windows开发 第7篇

Windows CE.NET与Windows XP等桌面Windows操作系统有着许多共性,许多基于桌面Windows开发的应用程序经少许改动就可应用于Windows CE.NET中,但Windows CE.NET既不是一种桌面Windows系统,也不是某种桌面Windows系统的简化,开发Windows CE.NET应用程序要比开发桌面Windows应用程序困难得多,二者存在诸多差异。将结合作者在实际开发过程中遇到的一些问题着重讨论这些差异,为Windows应用程序开发人员快速掌握Windows CE.NET应用程序的开发方法提供参考。

2 差异

开发Windows CE.NET应用程序,可使用的工具主要有EVC(Embedded Visual C++)和Visual Studio.NET。在Visual Studio.NET环境中开发主要使用C#、VB.NET等语言,需要目标平台支持.NET Compact Framework;EVC具有与传统桌面Visual C++6.0开发环境基本相同的特性,使得VC++程序员可以平缓地过渡到Windows CE.NET平台上。鉴于VC6.0目前仍然拥有广大的用户群,其与EVC的差异也较为显著,以下将主要就典型的EVC4.0与VC6.0环境讨论开发Windows CE.NET与桌面Windows应用程序之间的差异。

2.1 开发环境

尽管EVC4.0与VC6.0在大多数方面都非常类似,但也存在重要的不同,主要表现在:

(1)EVC4.0编译器支持多种嵌入式CPU,支持多种指令集,而VC6.0只支持X86指令集,因此,在开始一个EVC项目时,必须首先针对目标硬件平台选择需要支持的指令集。同时,为能在开发机上进行调试,EVC4.0包含一个模拟器,而VC6.0无此功能,因而,在EVC中运行程序之前,需要正确选择目标平台。

(2)随EVC4.0安装附带的SDK内容非常少,远远不够软件使用,必须安装Windows CE.NET才能得到全部的SDK,而随VC6.0附带的SDK则基本包含全部内容。

2.2 字符集

在VC6.0上开发应用程序时,一般使用ANSI作为默认的字符集。而Windows CE.NET上的所有API和标准控件都只在Unicode环境下运行,操作系统向用户显示的所有文本实际上也都是Unicode文本。为此,通常的解决方法是在两种平台上都使用通用字符串类型,通用字符串类型可以根据目标操作系统的不同,在编译时自动映射为正确的字符集,从而保持代码的统一,提高程序的可移植性。具体可通过使用以下形式来声明字符串变量和表示字符串常量:

字符串变量的声明:TCHAR*str;(或:LPTSTR str;)

字符串常量的表示:_T(“string constant”);(或:TEXT(“string constant”);)

2.3 API及MFC

Windows CE.NET的API只实现了Win32 API的一个子集,且其中部分函数的功能都已精简,同时,针对嵌入式应用又新增了一些提供特定扩展功能的函数和消息。Windows CE.NET的MFC虽然总体上遵循传统桌面应用的MFC框架,但是它们之间仍存在较大差异。Windows CE.NET的MFC不支持DAO、ODBC、MDI、OLE和元文件等功能,并且也不支持一些在桌面平台上使用的控件、通用对话框和窗体特性,并且其还具有某些专用于本平台的特性,如命令栏控制类就是其所独有的。

在EVC4.0上利用Windows CE.NET的API或其MFC开发应用程序时,需要了解Windows CE.NET对Win32 API和桌面MFC的支持及兼容程度,针对存在差异,替换调整相应函数和消息响应,充分利用新增功能,从而使程序适应系统的要求。

2.4 硬件环境

承载Windows CE.NET的硬件设备多种多样,没有像PC那样的标准配置,并且其硬件资源非常有限,往往有特殊要求。突出表现在:

2.4.1 内存容量

在桌面Windows编程时基本无需考虑内存空间的限制,应用程序很少遇到内存不足导致分配失败的问题,即便是内存不足,系统还可以使用虚拟内存技术利用硬盘空间来扩充内存容量。而目前基于Windows CE.NET的设备内存较小,并分成文件存储内存和程序运行内存,且多数设备没有硬盘或其他大容量存储器。因此,开发Windows CE.NET应用程序时,需严格控制程序对内存的消耗,主要手段包括:控制程序本身的大小,尽可能减少程序文件所占用的内存空间,如:减少程序中的资源文件的大小,从而使程序能在这样少的内存环境中正确运行;尽量避免或简化大量消耗内存的操作,如:尽量避免递归调用,否则容易造成堆栈溢出这种极难发现的错误,Windows CE.NET为每个线程分配的栈空间较小,而堆空间则相对较大,若确实需要大量使用内存时,可以采用在堆上动态申请的方法来替代,尽量控制静态数组和静态变量的大小,以减小程序占用的内存,使程序运行得更快;增加对WM_HIBERNATE消息的处理逻辑,WM_HIBERNATE消息是当内存严重不足时由Windows CE.NET系统产生的,是为防止内存不足问题的一种应急机制,程序在收到此消息后应立即释放暂时不用的内存。

2.4.2 人机界面

从输入设备方面看,鼠标是PC上最常用的输入设备之一,而在Windows CE.NET设备中却很少使用。Windows CE.NET的常用设备是触摸屏,屏幕上没有光标,系统只能读到触摸产生的位置信息,由于不能进行类似桌面PC中的鼠标右键动作,也不支持WM_RBUTTONDOWN等消息。

从输出设备方面看,大多数Windows CE.NET设备显示屏幕小、分辨率低、颜色少,且不同设备间的形状也有较大差异。因此,在设计Windows CE.NET应用程序时必须合理地设置窗口的位置、大小和风格,在Windows CE.NET程序中所使用的位图和图片资源也需要考虑在不超过规定大小的情况下尽可能地提高对比度和清晰度,以保证足够的显示效果。

3 值得注意的问题

3.1 网络通信

由于EVC4.0中采用Unicode编码,可能导致与网络通信函数之间的字符串不兼容。如以下桌面Windows网络通信程序:

表示将目的IP地址设置为192.168.1.25。这段代码如果直接用到Windows CE.NET中则会出错。因为在Windows CE.NET中此字符串是Unicode字符串,使用CString::GetBuffer()成员函数得到的指针是WCHAR*类型的指针,而inet_addr函数要求的参数类型是char*,应利用WideCharToMultiByte()函数将Unicode字符串转换成ANSI字符串。

此外,还应注意:开发桌面Winsock网络程序时,可使用blocking、select、WSAAsyncSelect、WSAEventSelect、overlapped和completion port 6种套接字I/O模型,而Windows CE.NET平台只支持其中的select I/O模型。

3.2 文本文件生成

很多Windows CE.NET应用需要将数据存储成文本文件,以备查阅分析。在桌面Windows平台上要实现这一功能非常简单,只需要利用CFile::Write()函数直接将字符串写入.txt文件中即可,而在Windows CE.NET上,由于字符串以Unicode格式存储,直接写入会导致显示的是乱码。

解决此问题可有两种方法。一种方法是利用WideCharToMultiByte()函数先将字符串转换成ANSI编码后再写入,从而生成ANSI格式的文本文件。但该方法生成的文件无法用Windows CE.NET上默认的WordPad阅读。另一种方法是生成Unicode格式的文本文件。所有非ANSI编码的文本文件都需要在文件首部用几个附加字节来表明文件的编码类型,即需首先标示出该文本文件是采用Unicode编码的,具体做法是在文件头部增加这样两个字节的信息:FFFE。如将字符串变量str的内容存成文本文件string.txt的代码如下:

由上述代码可见,在使用CFile::Write()函数时,还应注意作为参数的字符串所占字节数,Unicode字符串所占字节数是该字符串所含字符数的两倍。另外,EVC没有相对路径的概念,如,“.Path”视为“Path”。

3.3 其他

桌面Windows程序中,线程间同步可以用临界区或信号量等方法实现;而Windows CE.NET平台不支持信号量访问控制方法,只能用临界区实现线程间同步。

采用基于PC的仿真器作为辅助开发工具时,由于仿真器的运行环境包括芯片类型和内存模式都是基于PC的,有些问题可能不会及时暴露出来,程序只有在下载到Windows CE.NET设备上时才能被发现。

与EVC4.0集成的帮助文档由于是从开发PC程序的帮助文档上摘录过来的,文档的内容并不完全正确,如:关于消息响应函数OnCtlColor()的说明里给出了支持控件的类型包括CTLCOLOR_DLG,即对话框类型,但该值在EVC4.0中没有定义,无法通过编译。

4 结语

弄清Windows CE.NET与桌面Windows应用程序开发的差异,有助于开发同一应用的两种版本,较为合理的顺序是先开发Windows CE.NET程序,再将其移植到桌面Windows上来,因为在Windows CE.NET上运行的程序要求更严,限制更多,因此,将Windows CE.NET程序移植到桌面所作的工作比反过来要少得多,笔者之前在基于Windows CE.NET 5.0平台的嵌入式设备上,利用EVC4.0 SP4成功开发了一套电子设备信号特性数据采集分析软件,并使用Visual Studio.NET 2005快速实现了其PC版本,现已投入使用,反馈良好,即由此项目总结得来,希望对有一定Windows编程基础并需转向Windows CE.NET平台的开发者们有所帮助。

参考文献

[1]汪兵,李存斌,陈鹏,等.EVC高级编程及其应用开发.北京:中国水利水电出版社,2005.

[2]周毓林,宁杨,陆贵强,等.Windows CE.NET内核定制及应用开发.北京:电子工业出版社,2005.

Windows开发 第8篇

本课程的目标就是使学生通过学习, 掌握使用Windows Server 2008开展服务器管理的各项工作, 包含日常管理、运行维护、服务器管理、数据备份和灾难恢复等各个管理层面的内容, 具备配置与管理Windows Server 2008和解决操作中疑难问题的基本能力。

课程设计

(一) 课程设计理念

在课程设计过程中, 我们以职业能力、创新能力培养为核心, 充分体现职业性、实践性、开放性的要求, 从职业岗位分析入手, 在专业人才需求调研的基础上, 同企业专家一起, 开展以岗位能力与工作过程为导向的课程体系改革;通过与行业企业合作对相关岗位任职要求进行分析、归纳, 将工作任务分解为知识、能力、素质的具体要求, 同时参照职业标准进行课程模块设计, 制定课程考核标准, 以此为基础组织课程教学资源, 进行实训条件与教学团队建设, 并组织实施, 校企合作共同完成对学生的评价。基于工作过程课程开发的基本理念如图1所示。

(二) 课程设计思路

宏观上, 整个课程学习过程模拟了企业中网络从无到有的构建和管理的完整工作过程, 做到了学习过程与工作过程的高度一致。课程分为多个模块 (子项目) , 每个模块 (子项目) 的学习过程以工作过程为导向, 最终形成学生的职业能力。学习过程分为接受任务 (分析企业需求) 、计划任务 (制定项目计划) 、实施任务 (操作步骤) 、完成任务 (测试和记录) 。

具体而言, 每一模块都从企业的某一个实际需求开始, 制定一个具体的任务 (子项目) , 讲解具体的实施过程, 在实施过程中完成知识学习。每个模块教学过程分为:任务的制定、相关知识介绍、教师演示操作步骤、学生独立完成任务。通过教、学、做的结合, 学生知道了为什么要做、怎么做、为什么这样做, 达到应用能力培养的目的。

内容选取

根据行业企业发展需要和完成职业岗位实际工作任务所需要的知识、能力、素质要求, 选取教学内容, 并为学生可持续发展奠定良好的基础。“工作的过程是学习, 学习的内容是工作”, 教学的内容必须针对工作的过程, 同时学习的内容也必须适合学生的认知特点。选取教学内容必须考虑的因素如图2所示。

针对计算机网络技术工作岗位、工作任务对知识、技能、能力与素养的要求, 总结出该岗位典型的工作任务。根据工作任务和课程目标, 推出完成这些典型工作任务应具备的技术能力。

通过广泛深入的调研, 分析归纳出计算机网络技术Windows网络系统管理工作岗位的典型工作任务和工作过程所需的知识和能力, 我们确定了本课程的“工作任务知识能力要求”对应表, 如表1所示。

本课程从工作过程中提炼典型的工作任务, 经过序化, 结合课程教学安排的需要, 设计了三大教学情境:网络操作系统的安装与管理、网络与应用程序基础架构管理、网络安全管理, 并将这三大教学情境按教学单元设计成21个子教学情境。课程内容组织总体示意图如图3所示。

共享资源建设

根据国家高等职业教育专业教学资源库项目建设规划, 我们于2012年开始启动“Windows网络操作系统配置与管理”课程共享资源建设工作。课程共享资源建设内容主要包括:课程标准、教材、电子教案、教学课件、实训案例、教学视频、习题试题、参考资料等。主要建设内容和内涵要求如表2所示。

“Windows网络操作系统配置与管理”课程整合了计算机网络技术专业最新教改成果、实践研究课题, 为全国设有计算机网络技术专业的高职院校的教师提供了先进教学经验学习、专业教学资讯交流、优质教学资源分享、教学改革实践的窗口, 同时为广大学生提供了大量实用丰富的学习资源, 使学生在实践中学习, 在学习中感悟, 在虚拟工作中成长, 激发学生通过互联网自主在线学习的动力。

共享资源库的建设是一个长期过程, 也是需要不断更新的过程。这个过程需要广大教师和学生共同努力。只有不断完善, 才能建成一个学生和教师学习与交流的良好平台。

参考文献

[1]张力, 朱葛俊.以学习者为中心的教学资源库建设研究——以网络技术专业为例[J].软件导刊, 2012 (12) :218-219.

[2]李凌, 周岚.高职院校共享型教学资源库建设研究[J].宜春学院学报, 2012 (4) :155-158.

[3]许琦.基于校企合作的高职院校教学资源库建设机制探讨[J].职业教育研究, 2012 (9) :12-14.

[4]杨柳.高职院校软件技术专业共享型教学资源库建设探究[J].咸宁学院学报, 2012 (1) :145-146.

[5]程琳, 廖思维.浅谈网络管理走标准化道路[J].价值工程, 2013 (14) .

[6]孙传明, 路红, 廖龙龙.基于云操作系统的网络互动学习平台开发研究[J].中国远程教育, 2012 (6) .

[7]高建良.基于云计算的跨平台系统研究[J].软件导刊 (教育技术) , 2012 (3) .

[8]武晶晶.网络服务器的访问控制方法研究[J].计算机光盘软件与应用, 2012 (17) .

[9]侯俐.成人教育网络化学习系统的开发[J].企业家天地 (理论版) , 2011 (5) .

[10]王峻.分布式文件系统在局域网中的应用[J].新疆广播电视大学学报, 2010 (2) .

Windows开发 第9篇

随着计算机技术的飞速发展,软件行业趋于多样化发展,数据库管理系统也发展得比较成熟,其中SQLite数据以其小巧,方便,快捷受到很多程序员的青睐,尤其是开发的系统需要轻量级的数据库。本文主要介绍了SQLite在Windows Forms应用程序中的应用,并讨论了实现方法。

1 SQLite

SQLite是D.Richard Hipp于2000年采用C语言编写的一个轻量级、跨平台的关系型数据库引擎,支持大部分SQL92标准(比如视图、事务、触发器、blob数据类型等),支持弱类型数据存储,开源免费。2001年发布2.0v版本,2004年发布了采用不同的数据文件格式以及编程接口的3.0v版本。

1.1 SQLite的功能特点

(1)支持大多数的SQL92标准的关系型数据库,包括索引、限制、触发和查看。(2)建立的每个数据库是分别存储在一个独立的不依赖于其他文件的独一数据库文件中。(3)官方网站上的源程序提供了C和SQL语言接口,可以通过第三方接口驱动程序实现对其他语言的支持。(4)数据大可达到2TB,小可是几百KB。(5)提供对事务功能与并发处理的支持。(6)SQLite不同于Server数据库或者是oracle数据库。它和程序运行在同一进程,运行过程中没有进程间通信,所以速度快、体积小、易于分发,适合运行在单机环境和嵌入式环境。

1.2优点

轻量级:SQLite为进程内数据库引擎,嵌入运行于程序的进程空间,速度快。SQLite全部的功能都包含在一个不到500KB的动态链接库文件。独立性:SQLite的核心引擎不依赖第三方的软件,编译链接进程序即可,无须“安装”。数据库集中:SQLite数据库中所有的信息都包含在一个文件内。提供多种编程语言接口:SQLite支持C/C++、Java、Python、PHP、DOT.NET等,提供了多种编程接口,适合混合语言编程。

1.3缺点

SQLite通过OS的文件锁实现库级锁,粒度很大,对并发控制、数据加密支持的不是太好,但是基于其开放源码的特性,用户可以自行加以改进。在创建索引(CREATE INDEX)和删除表(DELTE TABLE)时明显比其他数据库慢。

1.4 SQLite使用的场合

SQLite与其他数据库不同,它的设计目标就是尽量简单化,从而达到易于管理、易于安装、易于配置与维护。SQLite比较适合的环境主要有:网站、嵌入式设备、应用软件内部或临时的数据库,数据库教学等等。

2 SQLite体系结构

SQLite采用模块化的设计,主要由4个部分组成::内核(Core)、SQL编译器(SQL Compiler)、后端(Backend)以及附件(Accessories)。如图1所示。。

SQL语句通过接口进入编译器,从接口传递下来的SQL语句经过词法分析器将语句分析成一个个标示,然后传递给剖析器。剖析器把词法分析器传递来的标示,分析以后再根据它们的上下文装配成完整的SQL语句。代码生成器根据剖析器装配的SQL语句生成可以在虚拟机上运行的代码。词法分析器、剖析器、代码生成器来完成通常的编译功能。虚拟机执行代码生成器生成的SQL语句请求,通过B树索引和页缓存(一种缓存技术),以及操作系统接口(分别针对linux和windows操作系统,实现不同的连接)完成实际的执行[3]。

3 Windows Forms中应用SQLite数据库

3.1创建数据库

要想使用SQLite,也是一样必须先创建数据库。Windows下创建数据库可以用DB Browser for SQLite工具进行创建,也可以用代码来实现。代码主要使用SQLite Connection类来实现。SQLite Connection类中封装了创建与更新的各种逻辑与方法。例如以下代码:

3.2创建表

执行这些语句后,数据库会建立一个名为“记分册”的表,其第一个字段名为student ID,整数类型,并且是主键。其后字段名分别为“姓名”、“身份证号”、“专业”、“设备号”,同为字符型。

3.3填充数据

以上语句执行后,会在一个名为“class”的表中填充一组数据,数据分别为函数参数传递的值,这些参数分别为:year,classname,grade,major,course,teacher。还有一种数据是需要更改的,这样的数据需要用到以下语句:

这样就把名为“class”的表中主键值为函数参数num的数据进行了更新。

3.4数据查询

以上语句是把名为name的表的数据,读取到名为data的Data Table表中,这样data里面就有了整个表的数据,然后再进行数据的显示或者处理。

4 SQLite的数据库设计实例

本文研发出一个基于Windows Forms开发的平台与SQLite数据库结合的学生记分册管理系统,主要功能有:记分册添加、删除、修改,数据表如表1所示。

记分册信息录入、信息删除、信息修改。数据表如表2所示。

本系统将Windows Forms开发中应用了SQLite数据库,其使用方便小巧,安装灵活。运行效果图如图2所示。

5结束语

通过本文对SQLite的数据库的讨论,可以看出SQLit数据是具有实用性较好、空间占用小、安全可靠、成本低的特点,对于开发需要较小数据库的系统来说,是非常实用的一个数据平台,我们系统采用了SQLite数据库,并能够正常地运行使用,说明其稳定性是非常不错的,并且它的空间占用较小,安装方便正是我们系统所需。

参考文献

[1]MICHAEL OWENS.The Definitive Guide to SQLite[M].APRESS,2006.

[2]http:∥www.sqlite.com.cn SQLite中文网站,包括各种中文资料和应用文档.

Windows开发

Windows开发(精选9篇)Windows开发 第1篇蓝牙 (Bluetooth) 是一种支持设备短距离通信的无线电技术, 能在包括移动电话、PDA、无线耳机...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部