ASP教程 PHP教程 JSP教程 CGI教程 XML教程
  • ASP.NET教程
  • JAVA教程
    当前位置:教程 > 程序设计 > ASP.NET教程 > 正文

    如何把你的应用程序作为服务来运行(1)

    编辑:教程网 来源:网络 时间:2011年10月18日 23:43
    如何把你的应用程序作为服务来运行

    by Chris J. Duke

     翻译:Atai

    原创http://VBwire.com/advanced/howto/service.ASP





    本文章是“How—To”特别系列的第一部分。



    如果你已经精通VB,并且现在你正想发布你的最后杰作作为商业软件。在最后的时间里,你们老板告诉你:你的应用程序需要在Windows NT下必须作为服务来运行。你告诉你们老板:“没问题“。于是你回到你的工作位置,然后发现你的VB程序不能做到。于是你到Microsoft Knowledge Base寻求答案,你在网上搜索,你在新闻组里搜索,最后你在这儿就特别兴奋,这儿就是VB程序如何做为服务这一系列。现在你所认为不可能的事情变得比你曾经想象的要简单。



    本文章将把注意力集中到如何在Windows 95 和Windows NT3.51和或者更高版本来把你的Visual Basic4.0 或者Visual Basic5.0程序作为服务来运行。当你的应用程序作为服务时,你的应用程序能在登陆之前启动,这样你的程序能够在启动的时候运行。这样对于网络程序(比如Web服务器,邮件服务器或者是其他任何那些需要一直运行的应用程序)是很有用的。

    请参看下一篇文章,这篇文章是关于如何下载一个免费的ActiveX控件加载到你的Form上马上把你的VB应用程序很简单的设置为NT 服务。



    Window95

    你可能要问你自己,为什么你需要把你的应用程序在Windows95上作为一个服务来运行。你也可能问是否Window95像WindowNT能够把你的应用程序作为服务来运行。

    没错,Window95能够想Windows NT那样把应用程序作为服务来运行。为什么你将能够做到的理由就是你将在登陆之前启动你的应用程序。这经常会在Web服务器以及邮件服务器上使用。因为Windows 95的安全缺乏性,把你的应用程序作为服务将变的相当简单。但是这种情况对于Windows NT来说不适合(请看下面)。

    在Windows95把你的应用程序作为服务来运行是很简单的。所有需要做的就是修改注册表。但是对于Windows NT来说却是一个地狱,对于Windows95,不要认为它毫无难处。本节将给你提供一个对Windows95重要的工作。

    为了在Windows95中把你的应用程序作为一个服务,增加一个字符串值到你的注册表中:

    HKLM\SOFTWARE\Microsoft\
    Windows\CurrentVersion\RunServices

    例如。假设你的应用程序叫“MicroSpud“,创建一个字符串值,值为:MircoSpud”,并且输入可执行文件的全路径到注册表的数据域中。下面是其步骤:


    Step 1: 增加一个新的字符串值


    Step 2: 输入可执行文件路径


    Step 3: 全部完成,重新启动,MicroSpud将在登陆前启动

    Windows 95托盘图标

    现在你好记得在前面提到的“Quirk”吗?它在这里。如果你的应用程序启动,并且有托盘的话,你将想阅读这个对之地详细说明。

    当你的应用第一个启动,你最有可能在Form_Load()或者Main()事件中添加你的托盘图标。如果通过重新启动Windows95被设为自动登陆,那么这个问题将不存在。尽管如此,当一个用户强制登陆的话,将发生以下的事情:

    Windows95 启动
    你的应用程序作为服务
    你的应用程序视图加载托盘图标,但是失败,因为已经没有托盘图标被加载
    登陆对话框出现
    T用户输入用户名和密码
    桌面开始加载
    Y你的图标在托盘区不会出现


    解决方案是重复的调用Shell_NotifyIcon()API直到它返回一个TRUE布尔值。我发现一个来实现它的解决方法是加上一个计时器。计时器初始化为启动状态,时间间隔为5秒。在调用计时器的事件(Timer1_Timer)时调用Shell_Notification()。一旦API返回TRUE值时,关闭计时器。



    Window NT
  • 原文来自 教程网 转载请注明:http://www.websmill.com/chengxu/aspnet/28457.html

  • 上一篇:Accessing an Excel Spreadsheet in ASP.NET (VB and C#) by Ale
  • 下一篇:可靠的 XML Web Service (1)