- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章节系统相关和图形界面
第9章 系统相关和图形界面 对于系统管理员而言,可能每天都会需要与脚本打交道,有时是为了简单的诸如自动备份和恢复系统的任务,有时是因为需要自动完成很复杂且不断重复性的工作,例如周期性的检测和释放磁盘空间,存储24小时内的所有系统设置的改动等。脚本语言没有繁冗的语法限制,能够快速地开发和执行,即写即用,而且与操作系统结合非常紧密,其实最初就是为了协助系统管理员而诞生的。Ruby作为一门新兴的动态脚本语言,很好地继承了前辈在系统管理方面的优势。在本章中将会全面介绍Ruby在系统方面的技术和技巧。另外在本章的后半部分还将介绍如何使用Ruby创建图形界面(GUI)。 9.1 运行外部程序 运行外部程序,是与外部系统交互的一种方式,也是系统操作最基础的功能之一。Ruby提供了多种运行外部程序的方式。 (1)第一种方式是使用%x方法,它可以执行外部命令或程序,运行时,会一直等待程序运行结束然后再继续执行后面的代码,运行完毕后会将程序输出的结果以字符串形式返回。例如: list = %x(dir) (2)另外一种方式是使用system方法,很多语言中都有同名的方法,它通过一定的内部机制执行指定的命令。例如: system(“notepad”) #打开记事本 system(“dir c:\\”) #显示c:\下的目录文件 9.2 编写命令行程序和ARGV变量 虽然操作系统已经步入了图形化操作的阶段,但是对于系统管理而言,文本形式的命令行程序依然非常重要。 到此为止,本书中介绍的所有Ruby程序示例都是要么可以在irb中运行,要么就是可以使用ruby.exe解析程序在命令行窗口中直接执行,不难发现原来Ruby命令行程序可以实现如此强大的功能。目前编写完善的命令行程序唯一欠缺的就是接收通过命令行传递给Ruby程序的参数,实际上Ruby提供了一个全局变量ARGV来实现这个功能。ARGV为一数组,可以使用ARGV.size获得参数的数量,ARGV[0]来获得第一个参数等。 9.3 Win32API和Win32OLE 虽然Ruby诞生于Unix环境,而且不容否认的是Ruby在Unix环境中能够发挥最大的威力,不过Ruby的作者和整个社区都在尽力改变这种情况。Ruby已经迈向了许多平台,作为Ruby的第二平台Windows,很显然也获得了比较成熟的支持。下面就将介绍Ruby对于Windows 32 API接口以及Windows自动化的支持和简单应用。 9.3.1 Win32API简介 Win32 API是Windows操作系统内核与应用程序之间的接口,它将Windows系统内核提供的功能进行函数包装,应用程序通过调用相关函数而获得相应的系统功能。标准Win32APl函数包括系统服务、通用控件库、图形设备接口、网络服务、用户接口、系统Shell以及Windows系统信息等众多方面的支持。 Ruby标准库中提供了一个名为Win32API的库,为Ruby程序提供了访问Window 32 API接口的支持。使用过程可以分为三步: (1)使用Win32API.new定义Ruby对API的接口,例如: get_cursor_pos = Win32API.new(user32,GetCursorPos,[P],V) (2)调用API时,使用Win32API实例的Call方法调用,同时可以传入相应的参数。例如: get_cursor_pos.Call(lpPoint) (3)传入的参数和传回的结果在需要时,可以使用Array的实例方法pack和String的unpack方法设置或获得正确的数据。 9.3.2 Win32OLE简介 OLE (Object Linking and Embedding、对象的链接与嵌入)是一项增强Windows应用程序之间的相互协作性的技术,它使Windows应用程序的功能得以扩展。使用OLE技术,一个Windows应用程序可以启动其他Windows应用程序,也可以显示和控制其他Windows应用程序的数据,并在创建该数据的程序中对它进行编辑。 Win32OLE库是Ruby程序访问Window OLE自动化操作的接口。它所操作的也是对象,因此相对于Win32API而言使用上会更加简单一些。在创建OLE对象时,使用的也是Win32OLE.new方法,参数可以是OLE自动化对象类的名称,也可以是类的CLSID。例如,以下两种方式是一致的: excel = WIN32OLE.new(Excel.Application) excel = WIN32OLE.new(0000-0000-C000-000000000046}) 9.3.3 使用Win32OLE操作Word和Excel Microsoft Of
文档评论(0)