




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
WINDOWS系统辅助管理程序设计与开发论文作者姓名申请学位专业申请学位类别指导教师姓名(职称)论文提交日期WINDOWS系统辅助管理程序设计与开发摘要随着信息化、网络化、数字化成为社会发展的大趋势,信息化浪潮冲击着人类社会的各个领域,网络管理和搜索系统一直以来都是计算机的重要功能。通过对非计算机行业的用户使用计算机的调查了解,用户希望有一个操作简单、界面友好的工具集,在这种情况下,该系统开发了一个获取基本信息的网络工具集和一个简易的文件查找系统。本设计采用VISUALBASIC开发工具,有效的实现了对本机地址、用户信息、工作站信息、服务信息的查看,获取目的网络的连接状态,还可根据用户需求设定搜索文件。在设计中以需求分析为基础,写出系统开发计划、规划实现流程及相关问题的实现方法;设计过程遵循软件工程的方法,完成了WINDOWS系统辅助管理程序的设计与开发,为不熟悉WINDOWS系统操作的用户提供了一个便捷的操作环境。关键词网络管理;文件搜索;VISUALBASICTHEDESIGNANDDEVELOPMENTOFWINDOWSSUPPLEMENTARYMANAGEMENTPROGRAMABSTRACTNOWADAYS,THEMAINSTREAMSOFSOCIALDEVELOPMENTAREINFORMATIONBASED,NETWORKANDDIGITALIZATIONUNDERTHESESTEAMS,THEIMPACTONTHETIDEOFINFORMATIONTOUCHESONEVERYFIELDOFHUMANSOCIETYTHENETWORKMANAGEMENTANDSEARCHINGSYSTEMHASALWAYSBEENBEINGTHEIMPORTANTFUNCTIONSOFTHECOMPUTERAFTERCONVEYINGUSERSWHOAREINNONCOMPUTERMAJORINGINDUSTRY,WECANLEARNTHATUSERSWOULDLIKETOHAVEATOOLCENTERTHATCANEASILYOPERATEANDHASAFRIENDLYINTERFACETHEREFORE,ASIMPLENETTOOLCENTERFORBASICINFORMATIONGAININGANDASIMPLEDOCUMENTSEARCHINGSYSTEMAREDEVELOPEDINTHISDESIGN,VISUALBASICISADOPTASADEVELOPINGTOOLANDITHELPSREALIZECHECKINGUPTHEADDRESSOFTHECOMPUTERITSELF,INFORMATIONOFTHEUSERS,OFTHEWEBSITESASWELLASOFTHESERVICEITALSOHELPSREALIZEGAININGTHELINKSTATEOFTHETARGETNETBESIDES,ITCANSETUPDOCUMENTSEARCHINGINACCORDANCEWITHTHEUSERSNEEDSTHEPROCESSOFTHEDESIGN,WHICHISONTHEBASISOFTHEANALYSISOFNEED,SHALLWRITETHESYSTEMATICDEVELOPMENTPLAN,PROGRAMTHEREALIZINGFLOWANDTHEREALIZINGMETHODSOFSOMERELATEDPROBLEMTHEDESIGNISFOLLOWEDTHEPROCESSOFSOFTWAREENGINEERINGMETHODSANDTHENDESIGNANDDEVELOPMENTAWINDOWSSYSTEMAUXILIARYMANAGEMENTPROCESSESWHICHISFORTHEUNFAMILIARUSERSWITHTHEWINDOWSOPERATINGSYSTEMWITHACONVENIENTOPERATINGENVIRONMENTKEYWORDSNETMANAGEMENTFILESEARCHINGVISUALBASIC目录论文总页数26页1引言111课题背景112国内外研究现状113本课题研究的意义114本课题的研究方法12需求分析121需求调研122开发运行环境223软件设计43系统工具设计与实现531获取主机名和IP地址5311功能设计5312界面实现732获取物理地址8321功能设计8322界面实现1033显示本机用户信息10331功能设计10332界面实现1234显示工作站信息13341功能设计13342界面实现1535列举本机服务16351功能设计16352界面实现1936目的地是否可达19361功能设计19362界面实现2137文件搜索详细设计21371功能设计21372界面实现234测试24结论24参考文献24致谢25声明26第1页共26页1引言11课题背景WINDOWS这个优秀的图形化操作系统,如今已深入人心,成了PC机市场中的绝对主流操作系统。INTERNET的发展是计算机技术的发展热点。如何在WINDOWS平台下开发出简易、出色的应用程序便成了一个很值得讨论的问题。12国内外研究现状随着计算机使用的普及,网络使用的快速发展,计算机技术带给人们的方便令人感叹。越来多的人享受着电脑和网络带来的便利,在这些过程中,不可避免的要对文件查找、本机上的一些信息的查看,以便更好、更快的利用资源,因此,大量的系统操作工具也应运而生。一些工具功能强大,比如一些文件查找工具,用户需在界面上输入精确关键字,或是包括其他一些信息才能实现查找的功能,也许一些用户只记得文件名的一部分,或是对于一些对系统操作或是系统相关知识不太熟悉的用户来说,一些功能或选项反而让人觉得模糊,不知道其功能。又比如一些本机信息查看工具,如地址、用户、服务等信息的查看,一些网络工具使那些对操作或信息不熟悉的用户面临同样的捆扰,而且,如何更快、更高效的得到用户需要的信息,也是工具开发必须考虑的问题。面对形形色色的“助手”,当务之急的问题就是针对这些初级用户开发一个简易、快捷、操作方便的应用工具。13本课题研究的意义随着计算机使用的普及,网络的快速发展,计算机技术带给人们的方便令人感叹,但人们正在享受这些便利时,一些潜在的隐患却给不少用户带来不必要的麻烦,如搜索知道部分关键字的文件,又如查看本机用户、地址、服务等信息,对WINDOWS系统操作不熟悉的用户来说就显得比较盲目,为了解决以上问题所带来的麻烦,提高信息技术应用效率,本设计开发一个WINDOWS辅助管理工具,为不熟悉WINDOWS系统操作的人员提供一个更方便、快捷的操作环境。14本课题的研究方法WINDOWS系统动态连接库提供了丰富的API,这些函数可为VB应用程序所调用。只要将DLL中的函数按一定的规则在VB中进行声明,就可以调用这些API函数,实现其中功能,程序编写简洁、易懂。文件搜索采用VB提供的一些功能,实现对文件和文件夹的处理。2需求分析21需求调研通过对非计算机行业使用计算机的人调查,了解他们对计算机使用中需要第2页共26页的功能进行分析。了解了用户需求后,对系统进行开发和设计。为不熟悉WINDOWS系统操作的人员提供一个更方便、快捷的操作环境。22开发运行环境(1)安装此系统所需的基本软、硬件环境为WINDOWS2000/XPVISUALBASIC60486DX/66MHZ或更高的处理器32MB以上内存VGA显示器CDROM驱动器本程序在WINDOWS操作系统下,以中文版VISUALBASIC60为前台开发工具,其中主要通过调用API函数来实现各功能。以下对本设计主要的开发软件VISUALBASIC60做个概述。(2)VISUALBASIC60概述VISUALBASIC提供了开发WINDOWS应用程序最迅速、最简洁的方法。它提供了一整套工具,供用户开发应用程序。“VISUAL”指的是开发图形用户界面(GUI)的方法。在图形用户界面下,不需要编写大量的代码去描述界面元素的外观和位置,而只要把预先建立的对象加到屏幕上的适当位置,再进行简单的设置即可。“BASIC”指的是BASIC(BEGINNERSALLPURPOSESYMBOLINSTRUCTIONCODE)语言,是一种十分广泛的计算机语言。VISUALBASIC在原有BASIC语言的基础上进一步发展,至今包含了数百条语句、函数及关键词,其中很多和WINDOWSGUI有直接关系。专业人员可以用VISUALBASIC实现其他任何WINDOWS编程语言的功能,而初学者只要掌握几个关键词就可以建立简单的应用程序。VISUALBASIC60与以前的版本不同,它是VISUALSTUDIO家族的一个组件,保留了VISUALBASIC50的优点,如在开发环境上的改进;增加了工作组;在代码编辑器中提供了控件属性方法的自动提示;能编译生成本机代码,大大提高程序的执行速度等。同时,VISUALBASIC60在数据技术、INTERNET技术及智能化向导方面都有了许多新的特性。1数据访问的新特性VISUALBASIC60在数据访问技术方面比VISUALBASIC50有了很大的增强,首先,它采用了一种新的数据访问技术ADOACTIVEDATAOBJECT,使之能更好地访问本地和远程的数据库,其次,在数据环境方面,允许程序员可视化地创建和操作ADO连接及命令,为程序员操作数据源提供了很大的方便。第三,增加了ADO控件和集成的可视化数据库工具。第3页共26页2INTERNET功能的增强INTERNET是当今发展的潮流,VISUALBASIC60在INTERNET方面的在增强使得它已成为当前最强有力的开发工具之一。IIS程序设计专业版和企业版中都有。用VISUALBASIC60可直接创建IIS应用程序,响应用户的要求。DHTML的设计利用VISUALBASIC60程序员可直接通过VISUALBASIC代码来实现动态网页的设计。INTERNETEXPLORER4X对下载ACTIVEX文档的支持。3控件、语言和向导方面的新增特性DATAGRID、DATALIST、DATACOMBO等新增的数据控件,相当于DB版本的DBGRID、OLEDBLIST和DBCOMBO,所不同的是它们都支持新的ADO控件。可以创建自己的数据源和数据绑定对象。函数可以将数组作为返回值,并且可以为可变大小的数组赋值。安装向导、数据对象向导、数据窗体向导以及应用程序向导。这些新增的向导及功能增强的向导,可以使开发人员能设计出更优秀的应用程序。4高度可移植化的代码代码的可移植性是面向对象编程的一个重要特点。VISUALBASIC60集成了VISUALCOMPONENTMANAGERVCM,可视化模块设计器。5创建ACTIVEX控件更加轻松方便用VISUALBASIC60创建ACTIVEX控件,其外观和行为均和用语言编写的控件一样,可以用在VISUALC、VISUALBASIC、DELPHI甚至WORD、ACCESS中。6VISUALBASIC60有两张光盘的文档资料,包括VISUALBASIC60程序员设计手册、全文搜索索引、VISUALBASIC文档(VBDOCUMENTATION)、VISUALBASIC程序样例(VBPRODUCTSAMPLES)等。(3)VISUALBASIC60集成开发第4页共26页图21VB开发环境图左面是VB的工具箱里面的各种图标是我们开发程序时经常用到的标准控件。正中间是窗体编辑器,又称对象窗口。我们程序的界面,大部分是在它上面设计的。右上方是工程资源管理器,它能让我们对整个工程进行整体性的管理。右中处的是属性窗口,陈列着程序中所涉及的各种窗体和控件的属性。右下方是窗体布局区,它能够调节程序运行时窗体在屏幕中的位置。总结以非计算机行业的用户为分析对象,确定该系统开发的方向,最后确定其应该具备的功能,以确定系统的主要模块,也简单介绍了该软件的开发环境和运行条件。23软件设计(1)功能模块初步设计通过对用户需求调研并分析,确定系统应具备的功能,包括获取主机名和IP地址,获取物理地址,显示本机用户信息,显示工作站信息,列举本机服务,测试目的地是否可达,文件查找,各功能设计如下1、获取主机名和IP地址对用户而言要想轻松地在网络中遨游,首先必须对本地主机的网络配置信息有清晰的了解,如主机名、IP地址、所注册的域等。在网络编程中,一般都需要获取本地主机的主机名和IP地址,起码应该将这些信息显示给用户,让其感到程序界面的友好性。2、获取物理地址第5页共26页WINDOWS下的TCP/IP协议允许计算机通过网络与另一台计算机通过IP地址、主机名或NETBIOS名称进行通信。但是,当计算机间使用上述三种名称进行通信时,这些名称都必须解析为硬件地址,即MAC地址。如何获取计算机上安装的网卡的物理地址是一个重要问题。3、显示本机用户信息由于WINDOWS设计已达到了C2标准,C2标准建立在用户级别的权限管理基础上,因此任何WINDOWS中与安全性有关的问题都要先查看用户账号的相关信息,用户账号是WINDOWS常用的最小的用户身份标识。任何行为都直接与它的用户账号相联系。但是,管理整个系统的所有用户的权限是一个费时费力的工作,特别是用户很多的情况下。通过一个简易的用户显示工具,管理员可以很快的知道用户对某种资源有什么权限。4、显示工作站信息获取工作站的配置信息(如工作站的操作平台信息、操作系统版本信息等)以及工作站上的登陆用户信息。5、列举本机服务了解网络机器提供的服务信息非常有用,它可以让用户充分了解机器的性能和功用,对服务进行管理。6、测试目的地是否可达随着网络的普及,网络资源的丰富给很多用户带来很大的便利,获取网络的连接状态能更高效的利用网络资源。7、文件查找查找文件是每个用户经常遇到的事情,因此,一个简洁、方便的文件搜索工具将受到大家的青睐。(2)模块的组织结构图第6页共26页WINDOWS辅助管理程序设计与开发网络工具文件查找显示主机名和IP地址获取物理地址显示用户信息工作站及用户信息本机服务目的地是否可达图22功能模块图3系统工具设计与实现31获取主机名和IP地址311功能设计这个窗体主要用来获取本地主机名和IP地址。获取本地主机名及IP地址通过WINSOCKAPI编程实现,应用程序在使用WINSOCKAPI之前,必须先成功调用函数WSASTARTUP,对WINSOCKDLL进行初始化,协商WINSOCKDLL的版本支持,并分配必要的资源,如果在调用WINSOCK函数之前,没有加载WINSOCKDLL,则会返回SOCKET_ERROR错误,错误信息是WSANOTINITIALISED。而应用程序结束时,调用WSACLEANUP函数终止对WINSOCKDLL的使用,并释放资源,以备下一次使用。模块使用WSAGETLASTERROR函数返回上次发生的网络错误。当一特定的WINSOCKSOCKETSAPI函数指出已经发生了一个错误,则调用本函数来获得相应的错误代码。功能实现主要函数和结构(1)GETHOSTNAME函数返回本地主机的标准主机名,函数原型如下INTPASCALFARGETHOSTNAMECHARFARNAMEINTNAMELENNAME一个指向要存放主机名的缓冲区指针。NAMELEN缓冲区的长度。该函数把本地主机名存放在由NAME参数指定的缓冲区中。返回的主机名是第7页共26页一个以空字符结尾的字符串。主机名的形式取决于WINDOWSSOCKETS的实现,也就是说,它可以是一个简单的主机名,也可以是一个域名。如果函数调用成功,则返回0;否则返回SOCKET_ERROR。应用程序可调用函数WSAGETLASTERROR来获取详细的错误信息。(2)GETHOSTBYNAME函数根据主机名称返回相应的信息。函数原型如下STRUCTHOSTENTFARGETHOSTBYNAMECONSTCHARFARNAMENAME一个以空字符结尾的表示主机名的字符串。函数GETHOSTBYNAME返回一个HOSTENT结构的地址,该结构由WINDOWS套接字分配。应用程序不能修改本结果或释放它的某个成员。函数GETHOSTBYNAME不能解析传递给它的IP地址字符串。也就是说,如果向函数传递一个IP地址字符串作为参数,则函数认为这是一个未知的主机名参数。如果要想通过机器的IP地址字符串获取相应的主机信息,可以先调用函数INET_ADDR,将IP地址字符串转换为实际的IP地址,然后使用函数GETHOSTBYADDR来得到HOSTENT结构中的信息。函数GETHOSTBYNAME可以成功解析由函数GETHOSTNAME返回的主机名字符串。如果成功,则函数返回一个指向HOSTENT结构的指针;否则,函数返回一个NULL指针,若调用函数WSAGETLASTERROR,还可得到相应的错误代码。(3)结构HOSTENT,结构的定义如下STRUCTHOSTENTCHARFARH_NAME;CHARFARFARH_ALIASES;SHORTH_ADDRTYPE;SHORTH_LENGTH;CHARFARFARH_ADDR_LIST;H_NAME主机名的官方名称。H_ALIASES可选择的别名数组,该数组以NULL结尾。H_ADDRTYPE返回的地址的类型。H_LENGTH每个地址的字节长度。H_ADDR_LIS一个以NULL结尾的主机地址列表。窗体使用自定义函数GETIPADDRESS实现本地主机IP地址的获取PRIVATEFUNCTIONGETIPADDRESSASSTRING第8页共26页SHOSTNAMETRIMSHOSTNAMELPHOSTGETHOSTBYNAMESHOSTNAME为展开返回的IP地址,将HOST结构及其数据复制到变量中COPYMEMORYTMPIPADDR1,DWIPADDR,HOSTHLENFORI1TOHOSTHLEN由结果数组建立实际的IP地址SIPADDRSIPADDRTMPIPADDRI“NEXTENDFUNCTION窗体使用函数GETIPHOSTNAME实现主机名的获取PRIVATEFUNCTIONGETIPHOSTNAMEASSTRINGGETIPHOSTNAMELEFTSHOSTNAME,INSTRSHOSTNAME,CHR01SOCKETSCLEANUPENDFUNCTION312界面实现添加一个窗体,并按照下表设置窗体的属性表31获取主机名和IP地址窗体设置表窗体属性取值NAMENAMEANDIPCAPTION获取主机名及IP地址该窗体添加2个LABEL控件,CAPTION属性分别设置为主机名,IP地址,2个TEXT控件,TEXT属性均设为空,个COMMANDBOTTON控件,CAPTION属性设置为运行。添加完毕后的窗体如图所示第9页共26页图31显示主机名和IP地址界面单击按钮,调用GETIPHOSTNAME和GETIPADDRESS函数,在TEXT文本框中分别显示出当前主机名和IP地址。32获取物理地址321功能设计这个窗体主要用来获取MAC地址,本模块使用NETBIOS网络编程接口来获取网卡的物理地址。NETBIOSAPI只有一个函数NETBIOS,该函数解释和执行指定的网络控制块(NCB),函数的原型如下UCHARNETBIOSPNCBPNCB;PNCB指向NCB结构的指针,该结构描述了网络控制块。在网络控制块结构中,包含了一个执行NETBIOS命令、相应的NETBIOS函数需要用到的全部信息。NCB结构的定义如下PRIVATETYPENET_CONTROL_BLOCKNCB_COMMANDASBYTENCB_RETCODEASBYTENCB_EVENTASLONGENDTYPE进行任何NETBIOS调用之前,必须先将这个结构清零。NETBIOS提供了几个专门负责收集网络参数的命令,其中包括名字查找命令(NCBFINDNAME)和适配器状态命令NCBASTAT。这里主要讲述适配器状态命令,利用适配器状态命令,可取得与本地计算机及其LANA编号的有关信息。适配器状态命令返回一个ADAPTER_STATUS结构和紧接其后的大量NAME_BUFFER结构。ADAPTER_STATUS结构定义如下PRIVATETYPEADAPTER_STATUSADAPTER_ADDRESS5ASBYTE第10页共26页REV_MAJORASBYTENAME_COUNTASINTEGERENDTYPE在ADAPTER_STATUS结构中,最重要的成员是ADAPTER_ADDRESS成员,它表示的是网卡的MAC地址。使用函数GETMACADDRESS实现物理地址的获取PRIVATEFUNCTIONGETMACADDRESSASSTRINGPASTATHEAPALLOCGETPROCESSHEAP,HEAP_GENERATE_EXCEPTIONSORHEAP_ZERO_MEMORY,NCBNCB_LENGTHNCBNCB_BUFFERPASTATCALLNETBIOSNCBCOPYMEMORYAST,NCBNCB_BUFFER,LENASTTMPFORMATHEXASTADAPTADAPTER_ADDRESS0,“00“FORMATHEXASTADAPTADAPTER_ADDRESS1,“00“FORMATHEXASTADAPTADAPTER_ADDRESS5,“00“ENDFUNCTION函数GETMACADDRESS为自定义函数,它通过调用NETBIOS函数来获取网卡的MAC地址。GETMACADDRESS函数两次调用了NETBIOS函数第一次调用NETBIOS函数采用的是NCBRESET命令,目的是重置所有的LANA编号;第二次调用采用的是适配器状态命令NCBASTAT,通过它可以取得与本地计算机指定LANA编号有关的结构信息,从这个结构信息中,可以解析出网卡的物理地址。322界面实现添加一个窗体,并按照下表设置窗体的属性表32获取物理地址窗体设置表窗体属性取值NAMEMACADDRESSCAPTION获取物理地址该窗体上添加1个LABEL控件,CAPTION属性设置为MAC地址,1个第11页共26页TEXT控件,TEXT属性设置为空,1个COMMANDBOTTON控件,CAPTION属性设置为运行。添加完毕后的窗体如图所示图32获取物理地址界面点击按钮,程序调用GETMACADDRESS函数,在TEXT控件中显示主机物理地址。33显示本机用户信息331功能设计这个窗体主要用来显示系统中所有用户及其相关信息。使用API函数GETCOMPUTERNAME获取服务器名,使用API函数NETUSERENUM返回PDC/BDC用户管理器(USERMANAGER)中定义的所有用户,显示在LISTBOX控件中,调用API函数NETUSERGETINFO函数,并使用其中的USER_INFO_10结构返回当前服务器上指定用户的信息,包括用户名、用户全名、描述和用户描述信息,显示在对应的文本框里。其主要的函数和结构如下(1)NETUSERENUM函数NET_API_STATUSNETUSERENUMLPWSTRSERVERNAME,DWORDLEVEL,LPDWORDENTRIESREAD,LPDWORDTOTALENTRIES,LPDWORDRESUME_HANDLE;SERVERNAME一个指向UNICODE字符串的指针,该字符串给出了执行该函数的远程服务器名,空指针或空字符串指明以本地机作为服务器。LEVEL定义返回信息的级别,本设计只返回枚举的用户名,使用0值,即返回USER_INFO_0的信息。ENTRIESREAD指向一个DWORD变量的指针。该变量中包含了实际枚举的元第12页共26页素的数量。RESUME_HANDLE指向一个DWORD变量的指针。给出了重用句柄(RESUME_HANDLE),它用于继续查找存在的用户。如果函数调用成功,则返回NERR_SUCCESS;否则,返回错误代码。该函数不会返回WINDOWS所有的系统用户,它只能返回由函数NETUSERADD添加的用户。(2)NETUSERGETINFO函数NET_API_STATUSNETUSERGETINFOLPWSTRSERVERNAME,LPWSTRUSERNAME,DWORDLEVEL,LPBYTEBUFPTR;SERVERNAME一个指向UNICODE字符串的指针,该字符串给出了执行该函数的远程服务器名,空指针或空字符串指明以本地机作为服务器。USERNAME一个指向UNICODE字符串的指针,该字符串给出了将返回信息的用户名称。LEVEL定义返回信息的级别,本设计只返回枚举的用户名,使用10值,即返回USER_INFO_10结构的信息。如果函数调用成功,则返回NERR_SUCCESS;否则,返回错误代码。(3)USER_INFO_10结构PRIVATETYPEUSER_INFO_10USR10_NAMEASLONGUSR10_COMMENTASLONGUSR10_USR_COMMENTASLONGUSR10_FULL_NAMEASLONGENDTYPE窗体中使用定义了USER_INFO结构存放实际显示的字符串。窗体中使用自定义函数GETUSERENUMINFO()枚举本机用户PRIVATEFUNCTIONGETUSERENUMINFOBSERVERNAMEASBYTECOPYMEMORYUSERS0,BYVALBUFF,ENTRIESREAD4FORCNT0TOENTRIESREAD1LIST1ADDITEMGETPOINTERTOBYTESTRINGWUSERSCNT第13页共26页NEXTCNTENDFUNCTION以服务器名和当前选中用户名为参数,调用函数,返回USER_INFO_10结构中的用户信息。GETPOINTERTOBYTESTRINGW函数获取指针所指的字符串信息。窗体使用自定义函数GETUSERNETWORKINFO实现获取各个用户详细信息PRIVATEFUNCTIONGETUSERNETWORKINFOBSERVERNAMEASBYTE,BUSERNAMEASBYTEASUSER_INFOCOPYMEMORYUSRAPI,BYVALBUFF,LENUSRAPIGETUSERNETWORKINFONAMEGETPOINTERTOBYTESTRINGWUSRAPIUSR10_NAMEGETUSERNETWORKINFOFULL_NAMEGETPOINTERTOBYTESTRINGWUSRAPIUSR10_FULL_NAMEGETUSERNETWORKINFOCOMMENTGETPOINTERTOBYTESTRINGWUSRAPIUSR10_COMMENTGETUSERNETWORKINFOUSR_COMMENTGETPOINTERTOBYTESTRINGWUSRAPIUSR10_USR_COMMENTGETPOINTERTOBYTESTRINGW为自定义函数,用于获取指针中的字符串ENDFUNCTION332界面实现添加一个窗体,并按照下表设置窗体的属性表33显示用户窗体设置表窗体属性取值NAMEUSERINFORMATIONCAPTION用户信息该窗体首先添加一个LISTBOX控件,然后再添加5个LABEL控件,CAPTION分别设置属性为服务器名、用户名、用户全名、描述、用户描述,添加5个TEXT控件分别对应5个LABEL控件,TEXT属性均设为空,添加完毕后的窗体如图所示第14页共26页图33显示用户信息当用户单击工程主窗体上的用户信息按钮,调用GETUSERENUMINFO和RGBGETCOMPTERNAME函数,获取本机用户名和服务器名分别显示在LISTBOX和TEXT1控件中,用户单击列表框中的任一用户,调用GETUSERNETWORKINFO函数,获取USER_INFO_10结构中的用户信息,显示在下面对应的四个TEXT文本框中。34显示工作站信息341功能设计这个窗体主要用来显示工作站的配置信息和当前登陆的用户。程序主要用NETWKSTAGETINFO函数使用的结构WKSTA_INFO_102带回工作站的环境信息,包括平台信息、域名(或工作组)、计算机名、登陆到计算机的用户数目以及操作系统的信息。使用NETWKSTAUSERENUM函数使用的结构WKSTA_USER_INFO_0,该结构仅有一个成员,带回当前登陆到工作站的用户名。主要函数及结构定义如下(1)NETWKSTAGETINFO函数函数返回工作站的配置信息。NET_API_STATUSNETWKSTAGETINFOLPWSTRSERVERNAME,DWORDLEVEL,LPBYTEBUFPTR;SERVERNAME远程服务器名字的UNICODE字符串地址。第15页共26页LEVEL指定返回的信息的级别。本程序使用WKSTA_INFO_102结构。BUFPTR一个缓存的指针,存放由参数LEVEL指定的数据。函数调用成功,则返回NERR_SUCCESS,否则,返回错误信息。(2)WKSTA_INFO_102结构该结构包含了工作站环境信息,包括工作平台、域名、本机名称以及与操作系统有关的信息。结构定义如下TYPEDEFSTRUCT_WKSTA_INFO_102DWORDWKI102_PLATFORM_ID;信息级别,用于返回平台信息LPWSTRWKI102_COMPUTERNAME;一个UNICODE字符串指针,是本地计算机名LPWSTRWKI102_LANGROUP;一个UNICODE字符串指针,包含了计算机所属域名称DWORDWKI102_VER_MAJOR;操作系统的主版本号DWORDWKI102_VER_MINOR;操作系统的次版本号LPWSTRWKI102_LANROOT;DWORDWKI102_LOGGED_ON_USERS;登陆到本地计算机上的用户数WKSTA_INFO_102,PWKSTA_INFO_102,LPWKSTA_INFO_102;(3)NETWKSTAUSERENUM函数该函数枚举当前登陆到工作站的所有用户信息,只有本地组的管理员可以在本机或远程机上成功执行该函数。函数原型NET_API_STATUSNETWKSTAUSERENUMLPWSTRSERVERNAME,DWORDLEVEL,LPBYTEBUFPTR,LPDWORDENTRIESREAD,LPDWORDTOTALENTRIES,;SERVERNAME远程服务器名字的UNICODE字符串地址。LEVEL指定返回的信息的级别。本程序使用WKSTA_USER_INFO_0结构。BUFPTR函数返回时,它是指向返回的数据信息结构的指针。ENTRIESREAD表明实际枚举列表的元素个数。TOTALENTRIES表明当前可重用位置的可枚举的入口总数。函数调用成功,则返回NERR_SUCCESS;否则,返回ERROR_INVALID_LEVEL,第16页共26页表示参数LEVEL指定的值无效。(4)WKSTA_USER_INFO_0结构该结构包含了指定工作站上的用户名信息。其定义如下TYPEDEFSTRUCT_WKSTA_USER_INFO_0LPWSTRWKUI0_USERNAME;当前的登陆到工作站的用户名WKSTA_USER_INFO_0,PWKSTA_USER_INFO_0,LPEKSTA_USER_INFO_0;窗体使用自定义函数GETWORKSTATIONUSERNAME显示登陆到当前工作站的用户名PRIVATEFUNCTIONGETWORKSTATIONUSERNAMEBYVALDWWORKSTATIONASLONGASSTRINGSUCCESSNETWKSTAUSERENUMDWWORKSTATION,0,BUFPTR,MAX_PREFERRED_LENGTH,DWENTRIESREAD,DWTOTALENTRIES,DWRESUMEHANDLEIFDWENTRIESREAD0THENCOPYMEMORYWUI0,BYVALBUFPTR,NSTRUCTSIZEGETWORKSTATIONUSERNAMEGETPOINTERTOBYTESTRINGWWUI0WKUI0_USERNAMECALLNETAPIBUFFERFREEBUFPTR释放缓存并退出EXITFUNCTIONENDIFENDFUNCTION342界面实现添加一个窗体,并按照下表设置窗体的属性表34显示工作站信息窗体设置表窗体属性取值NAMEDETAILCAPTION网络工作站及当前用户信息该窗体首先添加一个LISTBOX控件,然后在控件上添加8个LABEL控件,其中6个对应返回的工作站信息分别设置其CAPTION属性,另一个LABEL控件设置标题为“函数调用成功(0)或错误次数“,剩余一个LABEL控件标题为调用NETWKSTAGETINFO函数出错的次数,无错则返回0,1个COMMANDBOTTON第17页共26页控件。添加完毕后的窗体如图所示图34显示工作站信息用户单击按钮,获取WKSTA_INFO_102结构中的工作站信息,调用函数GETWORKSTATIONUSERNAME返回指定机器的当前注册用户名,列表框中将显示出工作站的配置信息、用户数目以及登陆用户名。35列举本机服务351功能设计这个窗体主要用来列举本机在指定的服务控制管理器(SCMSERVICECONTROLMANAGER)数据库中的服务,返回每个服务的名称和状态信息。使用API函数ENUMSERVICESSTATUS枚举指定的SCM数据库中的服务,包括服务的名称和状态(为了成功调用函数ENUMSERVICESSTATUS,必须先调用函数OPENSCMANAGER打开服务管理数据库。一旦获得了数据库的句柄,就可以调用该函数了),获取的相关信息记录在ENUM_SERVICE_STATUS结构中,并由SERVICE_STATUS结构返回服务的有关信息。程序执行时,首先调用ENUMSERVICESSTATUS函数获取服务信息,然后判断是否枚举成功,并枚举了所有服务信息,若完成,则调用相关函数将信息返回显示在列表框中。其中主要的函数及结构定义如下(1)函数OPENSCMANAGERSC_HANDLEOPENSCMANAGERLPCTSTRLPMACHINENAME,机器名地址LPCTSTRLPDATABASENAME,数据库名地址DWORDDWDESIREACCESS,访问类型,本程序使用SC_MANAGER_ENUMERATE_SERVICE类型,允许调用ENUMSERVICESSTATUS函数来列举数据库中的服务);(2)函数ENUMSERVICESSTATUSBOOLENUMSERVICESTATUS第18页共26页SC_HANDLEHSCMANAGER,DWORDDWSERVICETYPE,DWORDDWSERVICESTATE,LPENUM_SERVICE_STATUSLPSERVICES,LPDWORDLPSERVICESRETURNED,LPDWORDLPRESUMEHANDLE;HSCMANAGERSCM数据库的句柄。由函数OPENSCMANAGER返回。DWSERVICETYPE枚举的服务类型,本程序使用SERVICE_WIN32类型,枚举SERVICE_WIN32_OWN_PROCESS和SERVICE_WIN32_SHARE_PROCESS类型的服务DWSERVICESTATE程序使用SERVICE_STATE_ALL类型,枚举处于SERVICE_ACTIVE和SERVICE_INACTIVE运行状态的服务LPSERVICES一个ENUM_SERVICE_STATUS结构的数组指针,其中包含了返回的数据库中的每个服务的名称和服务状态的信息PCBBYTESNEEDED指向一个DWORD变量的指针,该变量给出了接收剩余的服务入口所需的缓冲的字节数量LPRESUMEHANDLE指向一个DWORD变量的指针,该变量是一个输入/输出参数,用于输入时,它指定了枚举开始的入口地址,用于输出时,如果函数调用成功,则该参数的值为0。如果函数调用成功,则返回非零值;否则返回0。可调用函数GETLASTERROR来获取详细的错误信息。3ENUM_SERVICE_STATUS结构TYPEDEFSTRUCT_ENUM_SERVICE_STATUSLPTSTRLPSERVICENAME;指明了SCM数据库中的服务的名称SERVICE_STATUSSERVICESTATUS;指定一个SERVICE_STATUS结构,结构中包含了返回的LPSERVICENAME指定的服务状态信息ENUM_SERVICE_STATUS,LPENUM_SERVICE_STATUS;4SERVICE_STATUS结构TYPEDEFSTRUCT_SERVICE_STATUSDWORDDWSERVICETYPE;标明返回的服务类型DWORDDWCURRENTSTATE;指明服务的当前状态第19页共26页SERVICE_STATUS,LPSERVICE_STATUS;窗体中使用函数ENUMSYSTEMSERVICES枚举系统中的用户PRIVATEFUNCTIONENUMSYSTEMSERVICESCT1ASCONTROLASLONGIFENUMSERVICESSTATUSHSCMANAGER,SERVICE_WIN32,SERVICE_STATE_ALL,PNTR0,CBBUFFSIZE,CBREQUIRED,DWRETURNED,HENUMRESUMETHEN从PNTR数组中提取所需的信息WITHLIST1CLEARFORI0TODWRETURNED1SDISPNAMEGETSTRFROMPTRABYVALPNTRILPDISPLAYNAMESSVCNAMEGETSTRFROMPTRABYVALPNTRILPSERVICENAMEDWSTATEPNTRISERVICESTATUSDWCURRENTSTATEADDITEMSDISPNAMEVBTABSSVCNAMEVBTABGETSERVICESTATEDWSTATENEXTENDWITHENUMSYSTEMSERVICESDWRETURNED返回服务的数量ENDFUNCTION以下是获取服务状态的函数PRIVATEFUNCTIONGETSERVICESTATEDWSTATEASLONGASSTRINGSELECTCASEDWSTATECASESERVICE_STOPPEDGETSERVICESTATE“停止“CASESERVICE_START_PENDINGGETSERVICESTATE“启动期间“CASESERVICE_PAUSEDGETSERVICESTATE“暂停“CASEELSEGETSERVICESTATE“ENDSELECTENDFUNCTION352界面实现添加一个窗体,并按照下表设置窗体的属性第20页共26页表35列举本机服务窗体设置表窗体属性取值NAMESERVICECAPTION本机服务该窗体首先添加一个LISTBOX控件,然后添加3个LABEL控件,对应返回的工作站信息分别设置其CAPTION属性。1个COMMANDBUTTON控件。设置后运行的界面如下所示图35列举本机服务当用户单击按钮,调用函数ENUMSYSTEMSERVICES,实现对本地主机上的所有服务的枚举功能。可以看到列表框中已列举出了本地机的所有服务名称及状态信息。36目的地是否可达361功能设计这个窗体主要用来确定能否到达指定的目的地,并提供目的地的连接质量QOCQUALITYOFCONNECTION信息,包括接收数据速度,发送数据速度等。程序主要使用API函数ISDESTINATIONREACHABLE确定目的地址是否可达,并提供目的地址质量信息。此函数只使用于TCP/IP连接,用户在COMBO1控件中输入目的地址后,目的地址以字符串形式传递给本函数,其中的参数LPQOCINFO则给出包含接收QOC信息的结构QOCINFO的地址,获取其中信息,显示在相应的文本框中。其中主要的函数及结构定义如下(1)ISDESTINATIONREACHABLE函数BOOLISDESTINATIONREACHABLELPCSTRLPSZDESTIONATION,第21页共26页LPCSTRLPQOCINFO;LPSZDESTINATION一个指向表示目的地字符串的指针。LPQOCINFO指向QOCINFO结构的指针,该结构用于接收连接质量信息。如果函数调用返回TRUE,表示可以抵达目的地;否则,表示不能抵达目的地,可调用函数GETLASTERROR来获取相应的信息的原因信息。(2)QOCINFO结构TYPEDEFSTRUCTTAGQOCINFODWORDDWSIZE;DWORDDWFLAGS;有效的网络连接类型DWORDDWINSPEED;从目的地返回的数据的接收速度,单位是字节/秒DWORDDWOUTSPEED;发送到目的地的数据的发送速度,单位是字节/秒QOCINFO,LPQOCINFO;窗体中响应按钮单击事件,调用API函数ISDESTINATIONREACHABLE,并返回连接质量RESULTISDESTINATIONREACHABLECOMBO1TEXT,QOCWITHQOCSELECTCASEDWFLAGSCASENETWORK_ALIVE_LANTMP“有一个或多个LAN网卡“CASENETWORK_ALIVE_WANTMP“有一个或多个RAS连接“CASEELSEENDSELECTTEXT2TEXTFORMATNUMBERDWINSPEED,0“字节/秒“TEXT3TEXTFORMATNUMBERDWOUTSPEED,0“字节/秒“TEXT4TEXTTMPENDWITH362界面实现添加一个窗体,并按照下表设置窗体的属性表36测试目的地可达窗体设置表窗体属性取值NAMEDESTINATION第22页共26页CAPTION目的地是否可达该窗体首先添加一个COMBOBOX控件将TEXTBOX控件和LISTBOX控件的特性结合在一起,既可以在控件的文本框部分输入信息,也可以在控件的列表框部分选择一项,在代码部分向其中添加几个地址;然后添加3个TEXT控件,TEXT属性均设为空,等待接收数据。1个COMMANDBUTTON控件。设置后运行的界面如图所示图36测试目的地是否可达界面用户单击组合框后,选择其中的元素,文本框中的信息全部清空,准备接收下一个信息,单击按钮后,调用API函数判断能否抵达组合框中的选定地址,将结果显示在文本框中。37文件搜索详细设计371功能设计这个窗体主要实现对输入关键字相匹配的文件的查找,用户在关键字文本框中输入要查找文件的关键字,选择要搜索的驱动,在该驱动下查找,程序中加如代码判断关键字里是否含有,若不含,则加上,然后使用DIR函数搜索根目录中的符合搜索条件的文件,并在LISTVIEW控件中显示搜索到的文件的名称、路径、文件大小和修改时间。窗体中添加一个搜
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国可伸缩乒乓球网格行业市场全景分析及前景机遇研判报告
- 2025年中国咖啡机清洁液行业市场全景分析及前景机遇研判报告
- 癌症康复期用药指南
- 中国防雷避雷产品行业市场深度分析及行业发展趋势报告
- 2019-2025年中国定制酒行业市场深度分析及发展前景预测报告
- 网围栏可行性研究报告
- 中国电动自行车电商行业发展监测及市场发展潜力预测报告
- 2025年中国豆腐行业市场深度分析及发展前景预测报告
- 起重安装项目投资可行性研究分析报告(2024-2030版)
- 2025年 云南省观光车驾驶-特种设备作业N2证考试练习题附答案
- 湖北省武汉市2024年七年级上学期期中数学试题【附参考答案】
- 山东省青岛胶州市2024-2025学年高一数学下学期期末考试试题
- 六年级数学思政融合课教学设计圆的周长
- 停机坪无人驾驶车辆应用
- 严重创伤病种
- 北京版三年级上册除法竖式计算练习题300道及答案
- 《图书馆建筑设计规范JGJ38-2015》-副本
- 南乐县元村镇养殖协会标准章程
- 湖北2024年湖北武汉铁路职业技术学院招聘28人笔试历年典型考题及考点附答案解析
- 重庆市两江新区2023-2024学年八年级下学期期末抽测英语试题(解析版)
- 2025届贵州省贵阳第一中学高一数学第二学期期末监测试题含解析
评论
0/150
提交评论