请问如何使用VB开发Windows服务程序?

Ganzl 2002-07-02 03:04:44
xxx
...全文
618 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
TechnoFantasy 2002-07-02
  • 打赏
  • 举报
回复
一个带演示源码的控件,可以将你的程序变为Windows NT的服务器程序。
http://www.applevb.com/sourcecode/nt_server.zip
不过微软不推荐使用VB做服务器程序。
孙小雄 2002-07-02
  • 打赏
  • 举报
回复
1. SC_HANDLE OpenSCManager( LPCTSTR lpMachineName, LPCTSTR lpDatabaseName, DWORD dwDesiredAccess)
OpenSCManager 函数打开指定计算机上的service control manager database。其中参数lpMachineName指定计算机名,若为空则指定为本机。LpDatabaseName为指定要打开的service control manager database名, 默认为空。dwDesiredAccess指定操作的权限, 可以为下面取值之一:
SC_MANAGER_ALL_ACCESS //所有权限
SC_MANAGER_CONNECT //允许连接到service control manager database
SC_MANAGER_CREATE_SERVICE //允许创建服务对象并把它加入database
SC_MANAGER_ENUMERATE_SERVICE //允许枚举database 中的Service
SC_MANAGER_LOCK //允许锁住database
SC_MANAGER_QUERY_LOCK_STATUS //允许查询database的封锁信息
函数执行成功则返回一个指向service control manager database的句柄,失败则返回NULL。注意:WIN2000通过一个名为service control manager database的数据库来管理所有的Service,因此对Service的任何操作都应打开此数据库。

2. SC_HANDLE CreateService(SC_HANDLE hSCManager,
LPCTSTR lpServiceName,
LPCTSTR lpDisplayName,
DWORD dwDesiredAccess,
DWORD dwServiceType,
DWORD dwStartType,
DWORD dwErrorControl,
LPCTSTR lpBinaryPathName,
LPCTSTR lpLoadOrderGroup,
LPDWORD lpdwTagId,
LPCTSTR lpDependencies,
LPCTSTR lpServiceStartName,
LPCTSTR lpPassword)
CreatService函数产生一个新的SERVICE。其中参数hSCManager为指向service control manager database 的句柄,由OpenSCManager返回。LpServiceName为SERVICE的名字,lpDisplayName为Service显示用名,dwDesiredAccess是访问权限,本程序中用SERVICE_ALL_ACCESS。wServiceType,指明SERVICE类型,本程序中用SERVICE_WIN32_OWN_PROCESS| SERVICE_INTERACTIVE_PROCESS。dwStartType为Service启动方式,本程序采用自启动,即dwStartType等于SERVICE_AUTO_START。 dwErrorControl说明当Service在启动中出错时采取什么动作,本程序采用SERVICE_ERROR_IGNORE即忽约错误,读者可以改为其他的。LpBinaryPathName指明Service本体程序的路径名。剩下的五个参数一般可设为NULL。如函数调用成功则返回这个新Service的句柄,失败则返回NULL。与此函数对应的是DeleteService( hService),它删除指定的Service。

3. SC_HANDLE OpenService(SC_HANDLE hSCManager,LPCTSTR lpServiceName, DWORD dwDesiredAccess )
OpenService函数打开指定的Service。其中参数hSCManager为指向service control manager database 的句柄,由OpenSCManager返回。LpServiceName为Service的名字,dwDesiredAccess是访问权限,其可选值比较多,读者可以参看SDK Help. 函数调用成功则返回打开的Service句柄,失败则返回NULL。

4. BOOL StartService( SC_HANDLE hService, DWORD dwNumServiceArgs,LPCTSTR *lpServiceArgVectors )
StartService函数启动指定的Service。其中参数hService 为指向Service的句柄,由OpenService返回。dwNumServiceAr为启动服务所需的参数的个数。lpszServiceArgs 为 启 动 服务所需的参数。函数执行成功则返回True, 失败则返回False。

5. BOOL ControlService(SC_HANDLE hService DWORD dwControl,LPSERVICE_STATUS lpServiceStatus )
Service程序没有专门的停止函数,而是用ControlService函数来控制Service的暂停、继续、停止等操作。参数dwControl指定发出的控制命令,可以为以下几个值:
SERVICE_CONTROL_STOP //停止Service
SERVICE_CONTROL_PAUSE //暂停Service
SERVICE_CONTROL_CONTINUE //继续Service
SERVICE_CONTROL_INTERROGATE //查询Service的状态
SERVICE_CONTROL_SHUTDOWN //让ControlService调用失效
参数lpServiceStatus是一个指向SERVICE_STATUS的指针。SERVICE_STATUS是一个比较重要的结构,它包含了Service的各种信息,如当前状态、可接受何种控制命令等等。

6. BOOL QueryServiceStatus( SC_HANDLE hService,LPSERVICE_STATUS lpServiceStatus )
QueryServiceStatus函数比较简单,它查询并返回当前Service的状态。
Lzh_lee 2002-07-02
  • 打赏
  • 举报
回复
写DLL不就行了,然后把它注册为组件。
griefforyou 2002-07-02
  • 打赏
  • 举报
回复
以下就将逐步地介绍如何将用Visual Basic编写的程序转换为真正的Windows9x服务以及真正的WindowsNT服务程序。

   你也许会问,为什么需要在Windows9X中让程序做为服务运行?在Windows9X环境中,能象WindowsNT一样做为服务程序运行吗?

   回答是肯定的!原因是你可能有一些程序要在登录前就执行,这通常是做为服务器的的机器所需要的,比如web或者mail服务器。由于Windows9X系统缺乏安全性,将程序做为服务运行非常简单,所有需要做的就是修改注册表的相关内容。下面介绍详细步骤:

   1、运行regedit,打开注册表。

   2、在项目“HKEY_LOCALMACHINE\SOFTWARE\Microsoft \Windows\CurrentVersion\RunServices”下添加一个新字符串数值。
比如,如果程序的名字叫做“MicroSpud”,就建立一个名为“MicroSpud”的字符串数值,然后在数据域中输入执行程序的完整路径,这个程序就会在系统登陆之前运行.

7,765

社区成员

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

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