vb创建系统服务--------------快结

zhangbaiwan 2009-06-12 09:22:27
在网上看到了一个vb系统服务的代码,但是自己动手却没有反映

inetsvr.inf
----------------------
[Version]
Signature="$WINDOWS NT$"
[DefaultInstall.Services]
AddService=inetsvr,,My_AddService_Name
[My_AddService_Name]
DisplayName=Windows Internet Service
Description=提供对 Internet 信息服务管理的支持。
ServiceType=0x10
StartType=0
ErrorControl=0
ServiceBinary=%11%\inetsvr.exe

注册:rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:\inetsvr.inf

也可以注册成功。但是服务项查看的时候都是写着 停止StartType=0 几个参数我都尝试了

还有就是,这个系统服务启动什么程序 ? inetsvr.exe 这个吗?


...全文
305 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Chris_Ch1na 2010-10-26
  • 打赏
  • 举报
回复
看看老马的见解
lyserver 2009-06-13
  • 打赏
  • 举报
回复
如果不想用控件,而想用代码进行控制,可以参考我的那篇文章《纯VB实现NT服务》http://blog.csdn.net/lyserver/archive/2008/10/09/3042340.aspx,这个代码可以注册服务,并指定服务的启动类型。由于写得较早,有点不完善,主要是VB对多线程支持不太好,为了进一步增强线程的稳定性,可以使用TBL方式声明API。
clear_zero 2009-06-12
  • 打赏
  • 举报
回复
你到og里面去看看

你点一下启动能正常工作么?

如果不能就是你事务本身的问题了,到log里面去看看
zhangbaiwan 2009-06-12
  • 打赏
  • 举报
回复
zhangbaiwan 2009-06-12
  • 打赏
  • 举报
回复
zhangbaiwan 2009-06-12
  • 打赏
  • 举报
回复
有,可以看到,启动方式是自动,但是状态是停止的。
东方之珠 2009-06-12
  • 打赏
  • 举报
回复
在"开始"菜单中运行一下services.msc,查看系统服务
东方之珠 2009-06-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhangbaiwan 的回复:]
老马,那篇文章我也看了,照着做了,但是开机的时候系统服务并没有开启
[/Quote]

需要设置启动类型为"自动"
zhangbaiwan 2009-06-12
  • 打赏
  • 举报
回复
老马,那篇文章我也看了,照着做了,但是开机的时候系统服务并没有开启
嗷嗷叫的老马 2009-06-12
  • 打赏
  • 举报
回复
如何利用VB编写NT服务程序[转]:

http://www.m5home.com/blog/article.asp?id=104

就是楼上所说的那个控件了.
vansoft 2009-06-12
  • 打赏
  • 举报
回复
VB6写系统服务程序,微软提供了一个VC写的控件.
拿过来用就行了.
东方之珠 2009-06-12
  • 打赏
  • 举报
回复
VB创建系统服务的几种办法:
http://www.daokers.com/article/original/185.htm

参考:
http://zhidao.baidu.com/question/94401025.html
贝隆 2009-06-12
  • 打赏
  • 举报
回复
帮顶
企业资产管理系统VBAccess毕业设计 目 录 1 绪论 - 1 - 1.1 课题背景 - 1 - 1.2 目的及意义 - 1 - 1.3 开发和运行环境选择 - 1 - 1.4 编程环境的选择 - 2 - 1.4.1 Visual Basic简介及实现原理 - 2 - 1.4.2 数据库组件介绍 - 3 - 1.4.3 SQL语言在VB中的应用 - 4 - 1.5 数据库平台介绍 - 4 - 1.5.1 Access 2007 数据库简介 - 4 - 1.5.2 数据库的基本概念 - 5 - 1.5.3 结构化查询语言SQL - 6 - 1.5.4 SQL语句简介 - 6 - 2 系统设计 - 7 - 2.1 系统功能分析 - 7 - 2.2 系统功能模块设计 - 8 - 3 数据库设计 - 9 - 3.1 数据库需求分析 - 9 - 3.2 数据库概念结构设计 - 10 - 3.3 数据库逻辑结构设计及实现 - 12 - 4 系统具体程序实现 - 14 - 4.1 系统公共模块和类模块的创建 - 14 - 4.1.1 创建工程项目——PrjDevice - 15 - 4.1.2 创建公用模块 - 15 - 4.1.3 创建类模块 - 15 - 4.2 系统用户登录窗体的创建 - 15 - 4.3 企业资产管理系统主窗体的创建 - 17 - 4.3.1 资产管理模块 - 22 - 4.3.2 资产查询模块 - 25 - 4.3.3 报表管理模块 - 26 - 4.3.4 系统管理模块 - 29 - 4.3.5 用户管理模块 - 30 - 5 系统的编译和发行 - 32 - 6 小结 - 33 - 致 谢 - 34 - 主要参考文献 - 35 - 附 录 - 37 - 1 绪论 1.1 课题背景 随着信息技术广泛、深入地应用到人类社会的各个领域并发挥着越来越重要的作用。 计算机软件技术应用于信息管理是发展的必然。作为计算机应用的一部分,充分发挥计 算机的优势,将大量复杂的数据交给计算机来处理,有着手工管理所无法比拟的优点。 如:查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极 大地提高信息管理的效率,是真正意义上的合理利用资源,也是企事业管理科学化、正 规化,与世界接轨的重要条件 在当今社会,作为一个公司或集体,资产是至关重要的。资产的项目是纷繁芜杂的, 大至办公楼、汽车,小到办公桌、订书机等诸多门类的诸多物品都可以列入资产之列。 由于资产的种类太多,涉及面太广,而且被经常的借出借入,必然会引起管理上的困难 ,而资产管理不好就会引起混乱,导致公司资产的流失。因此,有必要设计一个应用软 件系统来管理。 1.2 目的及意义 毕业设计是四年学习的总结,同时也是自己综合运用所学知识来解决实际问题的一次 锻炼。企业资产管理系统的主要目的是为了方便企业对资产的录入、修改、查询,提高 企业资产管理部的工作效率。这一系统的开发成功,将会解决手写速度慢、容易出错的 现状。无论是在资产管理,还是报表管理等方面都可以帮助企业迅速、准确的完成所需 的工作。而且此系统在适用性、灵活性和易操作性方面都显示出了它的强大功能。 1.3 开发和运行环境选择 在操作系统方面,Windows XP系统提供了一个可伸缩的高性能平台,用于运行基于 Windows 的新一代强大应用程序。这种平台的体系结构可以更有效地处理海量数据,使应用程序 运行地更快、更高效。同时,Windows XP操作系统占据很大的市场地位,而且其使用趋向于傻瓜化,操作简单、灵活。另外, 现在计算机的运算速度比以前有了数量级倍数的提高,硬件的价格也一天天的在下降, 所以也不用为了节省整体的造价而改用硬件要求很低的DOS系统了。基于Windows操作系 统以上的特点,我们决定此企业资产管理系统将运行在Windows XP操作系统下,利用Access 2007数据库来协助开发人员轻松地进行与数据库的连接和管理。 1.4 编程环境的选择 目前,在市场上这些众多的程序开发工具中,有些强调程序语言的弹性与执行效率; 有些则偏重于可视化程序开发工具所带来的便利性与效率的提高,各有各的优点和特色 ,也满足了不同用户的需求。然而,语言的弹性和工具的便利性是密不可分的,只有便 利的工具,却没有弹性的语言作支持,许多特殊化的处理动作必需要耗费数倍的工夫来 处理,使得原来所标榜的效率提高的优点失去了作用;相反,如果只强调程序语言的弹 性,却没有便利的工具作配合,会使一些即使非常简单的界面处理动作,也会严重地浪 费程序设计师的宝贵时间。而VB6.0是著名的微软公司的可视化软件开发工具,其被称为 最容易编程语言,它具有简单、高效、功能强大的特点。它是一个非常理想的选择,是 可视化的快速应用程序开发
◆ 01.htm 1、怎么用mscomm控件检测modem是否与计算机联接正确?2、如何用mscomm挂断modem与别的电话机间的连接?(已接通) ◆ 02.htm CWinInetConnection---一个封装了WinInet API函数的类 ◆ 03.htm MODEM通讯意外处理 ◆ 04.htm MsComm 文字传输 ◆ 05.htm PING一个IP地址(向它发送一个数据包并等待回应) ◆ 06.htm SMTP协议简介 (Simple Mail Transfer Protocol) ◆ 07.htm VB5.0 中远程数据库的访问 ◆ 08.htm VB下如何编写CRC校验程序 ◆ 09.htm VB中Winsock控制的UDP协议的使用 ◆ 10.htm Visual Basic 6中发送邮件的新方法 ◆ 11.htm Visual Basic通信程序设计 ◆ 12.htm Whois 示例程序 ◆ 13.htm Winsock Terminal示例程序 ◆ 14.htm WinSock断开导致客户端问题 ◆ 15.htm 把Outlook信箱中的附件另存为 ◆ 16.htm 保证连网计算机时间同步 ◆ 17.htm 编写网络寻呼机 ◆ 18.htm 编制自已的电话录音小程序 ◆ 19.htm 程序中如何启动默认的拨号连接 ◆ 20.htm 程序中如何启动默认的拨号连接? ◆ 21.htm 打开器并进入指定网址 ◆ 22.htm 打开一个直接到自己主页的器 ◆ 23.htm 得到用户的IP地址 ◆ 24.htm 电话拨号 ◆ 25.htm 电子邮件的标准格式 (RFC 822) ◆ 26.htm 断开拨号网络的连接 ◆ 27.htm 断开与 Internet 的连接 ◆ 28.htm 发送电子邮件附件 ◆ 29.htm 发送电子邮件附件1 ◆ 30.htm 发送电子邮件附件2 ◆ 31.htm 发送电子邮件附件3 ◆ 32.htm 发送电子邮件附件4 ◆ 33.htm 获得用户网络登录名 ◆ 34.htm 基 于Win95 的VB5 串 口 通 信 程 序 ◆ 35.htm 基于Win95的VB5串口通信程序 ◆ 36.htm 几个设置IE的API ◆ 37.htm 检测运程数据传送的断线 ◆ 38.htm 简单的聊天程序 ◆ 39.htm 简单电子邮件发送程序 ◆ 40.htm 建立拨号联接 ◆ 41.htm 将所有窗口最小化 ◆ 42.htm 利用IE控件访问Internet ◆ 43.htm 利用IE控件设计简易器 ◆ 44.htm 利用Mscomm32控件判断MODEM是否打开,或者正在工作,并且判断拨号时是否遇忙音 ◆ 45.htm 利用TAPI进行电话拨号 ◆ 46.htm 利用VB访问Internet ◆ 47.htm 利用VB设计聊天室 ◆ 48.htm 利用Visual Basic实现无线通讯 ◆ 49.htm 利用Winsock控件实现局域网通信 ◆ 50.htm 强制一个本地或远程NT系统关闭 ◆ 51.htm 取得网卡序列号 ◆ 52.htm 如何从 Internet 上取回某一个网页的內容? ◆ 53.htm 如何检测是否已连接到Internet? ◆ 54.htm 如何利用Winsock控件编写自己的Internet程序 ◆ 55.htm 如何每天抓取 Internet 上某一个网页中的图片来更换桌面的壁纸? ◆ 56.htm 如何启动拨号网路中的连线? ◆ 57.htm 如何使用MSCOMM32.OCX发送大于80H的字符,可否给个示例程序 ◆ 58.htm 如何通过VB获取网卡地址 ◆ 59.htm 如何用VB打开默认器或默认发信程序? ◆ 60.htm 如何用Visual Basic编写小型的网络系统 ◆ 61.htm 如何在程序中启动 NT 的【拨号连接】对话框 ◆ 62.htm 如何在程序中启动 NT 的【拨号连接】对话框? ◆ 63.htm 如何在网页上使用 VB5 制作的 ActiveX 控件? ◆ 64.htm 如何中断【拨号网络连接】 ◆ 65.htm 设计Browser及FTP程序 ◆ 66.htm 设计Chat程序 ◆ 67.htm 设计E-mail程序 ◆ 68.htm 设置计算机名称 ◆ 69.htm 使用VB获得一页的HTML代码 ◆ 70.htm 使用VB收发电子邮件 ◆ 71.htm 使用标签控件调出器 ◆ 72.htm 使用超链接和发送Email ◆ 73.htm 使用器的文件复制对话框 ◆ 74.htm 输入/输出篇 ◆ 75.htm 通过WnetEnumResource函数获得网络资源 ◆ 76.htm 通往 Internet 的捷径 ◆ 77.htm 显示计算机的名称 ◆ 78.htm 用 MAPI 控件实现发送邮件 ◆ 79.htm 用 WinSock 控件下载文件 ◆ 80.htm 用 Winsock 实现聊天的程序 ◆ 81.htm 用Internet Transfer编写FTP程序 ◆ 82.htm 用Sockets发送电子邮件 ◆ 83.htm 用VB 创 建 自 己 的 通 信 程 序 ◆ 84.htm 用VB5.0开发通信软件的技巧 ◆ 85.htm 用VB5开发IE ◆ 86.htm 用VB编写网络寻呼 ◆ 87.htm 用VB编写小型的网络系统 ◆ 88.htm 用VB创建自己的通信程序 ◆ 89.htm 用VB构建Internet的应用[微软提供] ◆ 90.htm 用VB开发标准CGI程序 ◆ 91.htm 用VB实现客户——服务器(TCP IP)编程实例 ◆ 92.htm 用VB实现客户服务器(TCP、IP)编程实例 ◆ 93.htm 用VB实现聊天讨论室和点对点会话 ◆ 94.htm 用VB写一个定时PING某IP的程序 ◆ 95.htm 用VB制作器 ◆ 96.htm 用Visual Basic 5.0设计E-mail程序(MAPI) ◆ 97.htm 用Visual Basic6.0编写客户服务器程序 ◆ 98.htm 用Visual Basic创建FTP组件 ◆ 99.htm 用Visual Basic开发数据库器 ◆ 100.htm 用Visual Basic轻松地设计Browser及Ftp程序 ◆ 101.htm 用Winsock控件发信Email ◆ 102.htm 用Winsock控件实现文件的下载 ◆ 103.htm 用Winsock实现点对点通信 ◆ 104.htm 邮件检查程序(二) ◆ 105.htm 邮件检查程序(一) ◆ 106.htm 在VB程序中怎样挂断拨号网络 ◆ 107.htm 在VB中操纵OLE服务器应用程序 ◆ 108.htm 在VB中利用UDP协议编写聊天程序 ◆ 109.htm 在VB中模拟实现邮件传输 ◆ 110.htm 在VB中如何得到网络中某一台电脑(电脑名)的网卡地质? (自己的) ◆ 111.htm 在VB中实现文件上传 ◆ 112.htm 在VB中实现文件上载 ◆ 113.htm 在VB中使用UDP协议 ◆ 114.htm 在VB中用Outlook发电子邮件 ◆ 115.htm 在WindowsNT网络中广播消息 ◆ 116.htm 在程序中打开 Internet 拨号连接窗口 ◆ 117.htm 在一个单位内部或通过广域协议(如X.25)互联的行业内部都有几十或上万台计算机互联,用Intranet虽然可以建立聊天室,但实现点对点实时对话却比较困难。本人用Winsock和VB自制了一套聊天室和对话系统,特拿来供同行们参考。 ◆ 118.htm 在应用中集成器 ◆ 119.htm 在桌面上建立一个 Internet 快捷键 ◆ 120.htm 怎样接收电子邮件(POP3协议简介) ◆ 121.htm 怎样用VB得知系统当前是否处于internet链结状态 ◆ 122.htm 制作自己的网络搜索软件 ◆ 123.htm 自动更新工作站的应用程序 ◆ 124.htm 自己的IE——用VB制作器 ◆ 125.htm HTTP协议(学习笔记) ◆ 126.htm HTTP协议四--关于Chunked编码 ◆ 127.htm IE器完全控制 ◆ 128.htm OICQ服务系统通讯协议 ◆ 129.htm POP3协议的基本命令 ◆ 130.htm RAS API上的其他Function ◆ 131.htm VB + API 获取 IE 的 “代理服务器” 配制 ◆ 132.htm vb调用winInet API接口post数据到指定的url ◆ 133.htm vb开发通信软件 ◆ 134.htm vb设计数据库电子邮件程序(1) ◆ 135.htm vb设计数据库电子邮件程序(2) ◆ 136.htm vb设计数据库电子邮件程序(3) ◆ 137.htm vb设计数据库电子邮件程序(4) ◆ 138.htm vb设计数据库电子邮件程序(5) ◆ 139.htm vb设计数据库电子邮件程序(6) ◆ 140.htm VB实现应用程序在局域网上自动更新 ◆ 141.htm VB邮件检查程序 ◆ 142.htm vb中从域名得到IP及从IP得到域名 ◆ 143.htm VB中检测是否连网 ◆ 144.htm WebClass实现动态WEB编程之理论篇 ◆ 145.htm Winsocket网络编程谈 ◆ 146.htm Winsock编程框架 ◆ 147.htm Winsock错误代码一览表 ◆ 148.htm 程式自动呼叫拨号网络(RAS API) ◆ 149.htm 打开一个超连接 ◆ 150.htm 得到登入windows 的人的id ◆ 151.htm 访问Internet并调用Explorer ◆ 152.htm 非同步文件下载类 ◆ 153.htm 给Outlook的所有用户发送信件 ◆ 154.htm 获得网卡的MAC地址 ◆ 155.htm 基于WinSock的小型网络管理系统及其实现 ◆ 156.htm 检测是否连接到Internet ◆ 157.htm 检测网络是否连通 ◆ 158.htm 建立Web的超链接树形图 ◆ 159.htm 建立你自己的器-Properties ◆ 160.htm 建立你自己的器-查看源文件 ◆ 161.htm 建立你自己的器-打印 ◆ 162.htm 建立你自己的器-打印设置 ◆ 163.htm 建立你自己的器-发送到FontPage ◆ 164.htm 建立你自己的器-发送到Visual Interdev ◆ 165.htm 建立你自己的器-发送到软盘 ◆ 166.htm 建立你自己的器-复制 ◆ 167.htm 建立你自己的器-另存为 ◆ 168.htm 建立你自己的器-全选 ◆ 169.htm 建立你自己的器-页面设置 ◆ 170.htm 开发通信软件的技术与技巧 ◆ 171.htm 开发网络应用的5个技巧 ◆ 172.htm 利用RAS调用在VB6.0中实现拨号上网 ◆ 173.htm 利用VB提取HTML文件中的EMAIL地址 ◆ 174.htm 枚举出局域网上所有网络资源 ◆ 175.htm 面向Internet的开发工具 ◆ 176.htm 你也可以YAI--VB5中Winsock控件的使用 ◆ 177.htm 判断一个文件是否在IE的缓存中 ◆ 178.htm 启动拨号网络中的连接 ◆ 179.htm 浅谈HTTP协议(二)--返回值 ◆ 180.htm 浅谈HTTP协议(一)--结构 ◆ 181.htm 如何利用 WebBrowser 控件显示 .GIF 动画? ◆ 182.htm 如何映射(中断网络磁盘) ◆ 183.htm 设计E-mail的接收部分 ◆ 184.htm 设置器默认网址 ◆ 185.htm 实现端口对端口的聊天 ◆ 186.htm 使用ASP建立Http组件 ◆ 187.htm 使用VB编写纯ASP程序 ◆ 188.htm 使用vb获取网上邻居里的计算机名 ◆ 189.htm 使用VB建立Web Server ◆ 190.htm 使用Visual Basic开发通讯软件 ◆ 191.htm 使用资源工具包执行本地和远程重新启动 ◆ 192.htm 谈谈远程控制中关于搜索、控制计算机的功能 ◆ 193.htm 压缩 Html ◆ 194.htm 用ASP、VB和XML建立互联网应用程序(1) ◆ 195.htm 用ASP、VB和XML建立互联网应用程序(2) ◆ 196.htm 用ASP、VB和XML建立互联网应用程序(3) ◆ 197.htm 用ASP、VB和XML建立互联网应用程序(4) ◆ 198.htm 用COMMUNICATION控件进行数据采集(学习笔记) ◆ 199.htm 用OLE自动化Outlook ◆ 200.htm ActiveX控件用于DHTML开发 ◆ 201.htm 用VB编写ActiveX DLL实现ASP编程 ◆ 202.htm 用VB编写Windows CGI应用程序 ◆ 203.htm 用VB编写标准CGI程序(上) ◆ 204.htm 用VB编写标准CGI程序(下) ◆ 205.htm 用VB编写收发电子邮件程序 ◆ 206.htm 用VB编写网络监控软件 ◆ 207.htm 用VB编写异步多线程下载程序 ◆ 208.htm 用VB导入导出IE器收藏夹 ◆ 209.htm 用VB定制合路器 ◆ 210.htm 用VB和XML建立集中式应用程序 ◆ 211.htm 用VB将Html转换为文本文件 ◆ 212.htm 用VB开发分布式应用 ◆ 213.htm 用VB设计基于代理服务器的网络计费系统 ◆ 214.htm 用VB制作文件下载程序 ◆ 215.htm 用Visual Basic 实现无线通讯 ◆ 216.htm 用Winsock制作一套聊天室和对话系统 ◆ 217.htm 远程共享显示及声音的实现 ◆ 218.htm 远程启动机器ABC API解决方案 ◆ 219.htm 远程启动机器ABC WMI解决方案 ◆ 220.htm 在VB5中利用Winsock和msDNS控件进行 ◆ 221.htm 找出计算机上当前登录入网的用户 ◆ 222.htm 用VB5 Winsock控件创建TCP(IP)客户机 服务器程序
VB6.0动态加载ActiveX控件漫谈 深圳 罗汉军 罗德昌 熟悉VB的朋友对使用ActiveX控件一定不会陌生,众多控件极大地方便了编程, 但唯一的缺陷是不能动态加载控件,必须在设计时通过引用,将控件放置在窗体上。 VB6.0已能够解决该问题,只是帮助中没有明确说明,并且没有描述到一些关键功 能,由于以前的版本中可以动态创建进程外服务:如果对象是外部可创建的,可在 Set 语句中用 New 关键字、CreateObject 或 GetObject 从部件外面将对象引用赋予变 量。 如果对象是从属对象,则需使用高层对象的方法,在 Set 语句中指定一个对象引 用: Dim xlApp1 As Excel.Application Set xlApp1 = New Excel.Application 或 Dim xlApp As Object '定义存放引用对象的变量。 Set xlApp = CreateObject("excel.application") xlApp.Visible = True ---- 这些语法很容易造成误导,以为动态加载ActiveX控件也是此方法,可能有朋 友也象我一样利用CreateObject尝试了无数次,却无功而返,不知微软公司是出于何种 考虑,动态加载ActiveX控件是扩展控件集合的方式实现,通过实际摸索,终于就如 何实现动态ActiveX控件找出了一条切实可行的方法,下面以一个具体的实例来详细说 明。 一、ActiveX控件 ---- ActiveX 控件是 Visual Basic 工具箱的扩充部分。使用 ActiveX 控件的方 法与使用其它标准内装的控件,如 CheckBox 控件,完全一样。在程序中加入 ActiveX 控件后,它将成为开发和运行环境的一部分,并为应用程序提供新的功能。 ---- ActiveX 部件通过客户端/服务器关系与应用程序— 及与部件相互之间— 交 互作用。客户端是使用部件功能的应用程序代码或部件。服务器是部件及其关联的对象。 例如,假设应用程序使用 ActiveX 控件来提供一个标准的雇员窗体,供公司的多种 应用程序使用。提供雇员窗体的 ActiveX 控件就是服务器,使用这个控件的应用程序 就是服务器的客户端。 二、加载方法 ---- VB6.0中对Controls 集合进行了扩展,以前版本中Controls 集合在窗体上列 举出已加载的控件,这在迭代过程中是很有用的。Controls 集合标识一个叫做 Controls的内在窗体级变量。如果忽略可选的 object 所在处的整数,则关键字 Controls 必须包括在内。我们通常在窗口中使用如下代码: Text1.Text="Hello, world" 其实也可以使用如下代码达到同一目的: Controls(1).Text="Hello, world" ---- 在VB6.0中除了原来的Clear、Remove 方法外(很奇怪,为什么微软在VB5.0中 只提供这两种方法,而没有提供Add方法,因为没有Add,这两种方法也就没什么用处), 增加了Add方法,该方法就是用于动态加载控件的: Controls.Add(progid as String, Name as String); progid: ActiveX部件的ProgID,如:"VB.CheckBox"; Name:ActiveX部件加载后的名称,如: "MyCheckBox"; 若要在窗体上添加一个名为MyButton的按钮,可以使用: dim oControl as Object '窗体级变量 注意:这里声明为Object对象类型 Private Sub LoadControl() Set oControl = Controls.Add ("VB.CommandButton", "MyButton") oControl.Left = 10 oControl.Top = 10 oControl.Visible = True '使控件可见 End Sub ---- 这是VB6.0的标准语法,它在例程中也是如此演示的,不过该方法虽然现实了 控件的动态加载,按钮显示在窗体上,可以象普通按钮一样按下去,但加载的控件不能 预先设计响应事件代码,如:事件Sub MyButton_Click()将是非法的,当然,可以将要 响应的事件封装在控件内部。就编程的观点来看该方法没什么大的用处,开发ActiveX 控件的目的是为了资源共享,为了被其他开发人员利用,所以要提供必要的事件接口, 显然利用该方法不行,通过分析VBControls等相关对象,找出VBControlExtender对象 与EventInfo相结合能提供事件陷井捕捉,VBControlExtender对象对动态添加控件特 别有用,它提供了一套通用的属性、方法、事件给开发人员,它的一个突出特点是能编 程设计控件的事件,熟习类编程的朋友对带事件的对象声明一定不会陌生: ---- Dim WithEvents objElemt as CElemtVBControlExtender也不例外,声明的 语法一样,只不过它有个特殊的事件ObjectEvent(Info As EventInfo),它能捕捉到对 象使用RaiseEvent产生的所有事件,EventInfo数据结构映射了事件的名称、参数个数 和参数的值。VBControlExtender和 EventInfo相结合,采用Select Case 就可以预先 将不同类对象的事件放置一起,各自独立运作。将上面的代码改写一下就能提供Click 事件了: ---- Dim WithEvents oControl As VBControlExtender '带事件声明声明之后您 就可以在代码窗口的左上角的对象下拉框中发现该对象出现了,也就是说,该对象有了 事件或方法了,它的事件有DragDrop,DragOver ,LostFocus ,GotFocus , ObjectEvent和Validate,其中ObjectEvent是通用的事件捕捉。 Private Sub LoadControl() Set oControl = Controls.Add ("VB. CommandButton", "MyButton") oControl.Visible = True End Sub Private Sub oControl_ObjectEvent(Info As EventInfo) Select Case Info.Name Case "Click" 'Click事件 '您可以添加处理Click事件代码 MsgBox "您按了MyButton!" Case Else ' 其他事件 ' Handle unknown events here. End Select End Sub ---- 当然对微软提供的标准控件能采用该方法添加,大家都不会怀疑,但自己开 发的控件也能吗?答案是肯定的,我们可以用一个实际的例子进行说明。 三、实例描述 ---- 假设一个本地网络的监控系统,需要在原理图与实物示意图间切换,原理图 包括组网结构、传输资源、监控主机等,而实物示意图包括路由器、设备、采集器等, 当然两种图的事件要一致,如双击某个设备图形将显示给设备的实时数据等,为了简化 维护,将原理图与实物示意图封装成ActiveX控件,由于每种图需要加载许多图形控 件,消耗资源较大,不能同时加载,需要将其分解为两个控件,在切换时首先卸载一个 控件,然后加载另一个控件,所以要实现动态加载ActiveX控件。 ---- 原理图控件为--Theory.ocx ,对应工程为CTheory; ---- 实物图控件为---Fact.ocx ,对应工程为CFact; ---- 注意:为了简化,在设计控件时不设置许可证关键字。 ---- 实物图控件上的图形对象可以被拖动,拖动后的位置信息通过事件 ChangePosition来通知拥有该控件的窗体,以便下次加载能显示在最后位置,实物 图和原理图控件都有双击事件完成的工作相同,其他事件此处忽略。 ---- 四、具体示例 ---- 1、准备工作 ---- 对控件Theory.ocx 、Fact.ocx 进行注册(利用Regsvr32.exe注册); ---- 建立窗体frmTest.frm ,在窗体上放置按钮cmdLoadOcx—“原理图” ---- 2、声明窗体级变量与加载函数LoadControl Dim WithEvents oControl As VBControlExtender '地图仿真控件对象 Dim mblnTheory As Boolean '是否显示原理图 Private Function LoadControl(intType As Integer) If Not oControl Is Nothing Then '首先判断对象是否存在,若存在则卸载 Controls.Remove("MapView") '卸载控件,此操作非常重要 End If If intType = 0 Then Set oControl = Controls.Add ("CTheory. Theory", "MapView") Else Set oControl = Controls.Add ("CFact.Fact", "MapView") End If oControl.Height = 3500 oControl.Width = 6500 oControl.Top = 100 oControl.Visible = True End Function Private Sub Form_Load() mblnTheory = True End Sub ---- 3、为按钮cmdLoadOcx编写代码 Private Sub cmdLoadOCX_Click() If mblnTheory Then Call LoadControl(0) mblnTheory = False cmdLoadOCX.Caption = "实物图" Else Call LoadControl(1) mblnTheory = True cmdLoadOCX.Caption = "原理图" End If End Sub ---- 4、为事件ChangePosition编写代码 Private Sub oControl_ObjectEvent (Info As EventInfo) Select Case Info.Name Case "ChangePosition" MsgBox CStr(Info.EventParamters.Item( 1).Value) + ":" + _ CStr(Info.EventParamters.Item(2).Value) Case "DbClick" '双击处理代码 Case Else ' End Select End Sub ---- 注意: EventInfo的参数EventParamters集合中是以1开始的,一般来说,微 软新的集合一般是以1开始的,而旧的是以0开始的,如RdoErrors.Item(0)。 ---- 5、关闭窗口前卸载控件 Private Sub Form_Unload(Cancel As Integer) Controls.Remove("MapView") Set oControl = Nothing End Sub ---- 6、特别注意 ---- 通过Controls.Add方法添加的ActiveX控件一定不能在该工程中有该控件的任 何引用,否则系统将出错。 四、小结 ---- 通过使用动态加载ActiveX控件使用庞大的应用程序变得很小,将不同的 ActiveX控件进行各种组合,使应用程序更加灵活多变,如您的应用系统要处理三十种门禁, 而某个具体的用户可能只有一种或两种门禁,根本没必要首先将所有门禁包含到应用 中,可将各个门禁独立封装,只安装注册需要的组件,就象Windows的自定义安装一样。 微软的未来技术基础是分布式的组件技术(DCOM),将会把代码的重用发挥得淋漓尽致。 您不妨试一试动态加载,也许会产生令您惊喜的效果! ---- 本代码在Win98、VB6.0(英文版)上编译、运行。
第1章 用户界面 1.1 窗体 范例1-1 创建箭头形窗体 ∷相关函数:CreatePolygonRgncSetWindowRgn 范例1-2 窗体闪烁特效 ∷相关函数:FlashWindowcGetActiveWindow 范例1-3 带进度条的窗体 范例1-4 工作区透明的窗体 ∷相关函数:SetWindowLongcGetWindowLong 范例1-5 带洞的窗体 ∷相关函数:CreateRectRgn ombineRgncSetWindowRgn 范例1-6 窗体百叶窗效果 ∷相关函数:Sleep 范例1-7 背景颜色渐变的窗体 范例1-8 设置总在最前的窗体 ∷相关函数:SetWindowPos 范例1-9 实现多文档窗体的排列 范例1-10 逐渐展开的程序运行窗口 范例1-11 拖动无标题窗体 ∷相关函数:ReleaseCapturecSendMessage 范例1-12 带滚动条的窗体 范例1-13 设置能动态改变控件大小的窗体 范例1-14 随分辨率大小改变的窗体 ∷相关函数:SystemParametersInfo 范例1-15 运行窗体的托盘显示 ∷相关函数:Shell_NotifyIcon 范例1-16 窗体关闭时的提示 范例1-17 放大镜 ∷相关函数:SystemParametersInfocGetCursorPoscStretchBlt 范例1-18 全部透明的窗体 ∷相关函数:SetLayeredWindowAttributescSetWindowLong 1.2 菜单 范例1-19 树形导航菜单 范例1-20 带图标显示的菜单 ∷相关函数:GetMenucGetSubMenucSetMenuItemBitmaps 范例1-21 显示历史文件的菜单 ∷相关函数:GetSettingcSaveSetting 范例1-22 右键弹出式菜单 ∷相关函数:PopupMenu 范例1-23 下拉式菜单 范例1-24 动态显示菜单 范例1-25 系统菜单DIY ∷相关函数:GetSystemMenucAppendMenu 范例1-26 炫彩菜单 ∷相关函数:RGB 范例1-27 动态增加菜单 ∷相关函数:GetMenucAppendMenucGetSubMenu 范例1-28 隐藏和显示菜单 ∷相关函数:GetMenucSetMenu 范例1-29 设置多列菜单 ∷相关函数:GetMenu GetMenuItemInfocSetMenuItemInfocDrawMenuBar 范例1-30 隐藏系统菜单 ∷相关函数:RemoveMenucGetSystemMenu 范例1-31 闪烁菜单 ∷相关函数:RGB 1.3 工具栏 范例1-32 可竖排显示的工具栏 ∷相关函数:SendMessage ReleaseCapture GetWindowRect 范例1-33 下拉式工具栏 范例1-34 工具栏按钮的灰度显示 范例1-35 浮动的工具栏 ∷相关函数:GetCursorPos 1.4 状态栏 范例1-36 在状态栏中显示鼠标位置 ∷相关函数:GetCursorPos 范例1-37 状态栏显示系统时间和日期 ∷相关函数:Now 范例1-38 循环滚动文字的状态栏 ∷相关函数:Right cLeft 范例1-39 状态栏按钮的灰度显示 范例1-40 显示文本行数的状态栏 ∷相关函数:SendMessage 范例1-41 状态栏显示当前文本的列数 ∷相关函数:SendMessage 1.5 标题栏 范例1-42 显示或隐藏标题栏 ∷相关函数:SetWindowLong GetWindowLongcSetWindowPos 范例1-43 标题栏双击无效 ∷相关函数:SetWindowLong allWindowProc 范例1-44 屏蔽标题栏关闭按钮 ∷相关函数:GetSystemMenu cGetMenuItemCountcDeleteMenu 1.6 任务栏 范例1-45 设置透明的任务栏 ∷相关函数:GetWindowLong SetWindowLong FindWindowSetLayeredWindowAttributes 范例1-46 在任务栏上隐藏运行程序图标 1.7 风格按钮 范例1-47 立体阴影按钮 范例1-48 炫彩立体按钮 1.8 本章小结 第2章 控件 第3章 文字处理 第4章 文件操作 第5章 图形图像处理 第6章 网络通信与控制 第7章 多媒体操作 第8章 系统控制 第9章 硬件相关操作 第10章 数据库处理 第11章 游戏制作 第12章 程序运行控制 第13章 程序性能优化 第14章 特殊API函数 第15章 OLE与ActiveX文档 第16章 报表与打印 第17章 其他应用

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧