| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
如何在脚本运行的时候显示进度栏(或其他类似项)?
如何在脚本运行的时候显示进度栏(或其他类似项)?
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-24 10:45:31
问:

您好,脚本专家!在代码执行时如何使脚本执行一些有趣的操作?如何显示进度栏或其他类似项?

-- HD

答:

您好,HD。首先,我们建议您不要尝试使用真正的进度栏;因为它很难计算进度,更不要说显示进度了。我们都熟悉那些所谓的进度栏 – 唉,Microsoft 的产品中也包含一些,有些进度栏会指示完成某项操作的预计时间是 3 分钟,然后是 296 分钟,1 分钟,14 分钟。我们不想为这样的东西浪费时间。

我们建议您尝试一个简单的小对话框(或者至少是看起来类似于对话框的东西),它只是用来通知用户一些操作正在进行并请用户耐心等待。当操作完成时,我们的示例对话框会相应地显示一条提示消息,然后消失。它没有什么奇特之处,但的确很实用。

代码如下:

On Error Resume Next



Set objExplorer = CreateObject _

    ("InternetExplorer.Application")



objExplorer.Navigate "about:blank"   

objExplorer.ToolBar = 0

objExplorer.StatusBar = 0

objExplorer.Width = 400

objExplorer.Height = 200 

objExplorer.Visible = 1             



objExplorer.Document.Title = "Logon script in progress"

objExplorer.Document.Body.InnerHTML = "Your logon script is being processed. " _

    & "This might take several minutes to complete."



Wscript.Sleep 10000



objExplorer.Document.Body.InnerHTML = "Your logon script is now complete."



Wscript.Sleep 5000

objExplorer.Quit

我们在此进行的所有操作就是创建 Internet Explorer 的一个实例,然后使用以下这行代码在浏览器窗口中打开一个空白页面:

objExplorer.Navigate "about:blank"

去除工具栏和状态栏(通过将这些值设置为 0),然后将窗口大小分别设置为 400 像素和 200 像素。然后,我们将 Visible 属性设置为 1,其在屏幕上实际显示小的 Internet Explorer 窗口。纯粹是为了进行演示,我们使用下面这行代码配置窗口的 Title 属性:

objExplorer.Document.Title = "Logon script in progress"

最终结果是什么呢?结果是这个样子:

Internet Explorer

对于其本身来说已经很好了,但是我们或许还可以做得更好一点儿:首先,我们可以在 Internet Explorer 文档中显示自定义消息。为此,我们应设置文档正文的 InnerHTML 属性:

objExplorer.Document.Body.InnerHTML = "Your logon script is being processed. " _

    & "This might take several minutes to complete."

这段代码的好处是:在将值分配给 InnerHTML 属性时,我们可以使用所有我们喜欢的 HTML 标记。例如,假设我们希望用粗体显示此消息。在这种情况下,我们只需使用 <B> 和 </B> 标记即可:

objExplorer.Document.Body.InnerHTML = "<B>Your logon script is being processed. " _

    & "This might take several minutes to complete.</B>"

设置了 InnerHTML 属性之后,我们就得到与以下类似的 Internet Explorer 实例:

Internet Explorer

还不错吧?在示例脚本中,我们暂停 10 秒,然后用一条新消息替代旧消息,新消息会通知用户他们的登录脚本已经完成。我们再暂停 5 秒,然后消除 Internet Explorer 的实例。

如果您希望更加别致一些,您可以再进行几项操作。在即将展示给您的经修订的脚本中,我们使用 WMI 类 Win32_DesktopMonitor 来确定当前的视频分辨率(如 1024x768)。然后,我们使用一些简单的数学方法将 IE 窗口定位在屏幕的中间。例如,如果我们的屏幕宽度为 1024 像素,则应从 1024 中减去 400(Internet Explorer 窗口的宽度)。用这个数字除以 2,就得出了窗口左侧的像素位置。对显示高度 (768) 重复此操作可以得到窗口顶部的像素位置,从而使对话框在屏幕上居中显示。以下是用于获取屏幕宽度和高度的代码:

strComputer = "."

Set objWMIService = GetObject("Winmgmts://" & strComputer & "/root/cimv2")

Set colItems = objWMIService.ExecQuery("Select * From Win32_DesktopMonitor")

For Each objItem in colItems

    intHorizontal = objItem.ScreenWidth

    intVertical = objItem.ScreenHeight

Next

此处还有两行代码,可将窗口定位在屏幕上:

objExplorer.Left = (intHorizontal - 400) / 2

objExplorer.Top = (intVertical - 200) / 2

附注。上述代码事实上适用于只具有单个监视器的计算机;在具有多个监视器的系统上,特别是在这些监视器的其中一个关闭时,情况将变得有点复杂。现在,我们假设只有一个监视器;有关多个监视器的问题我们将在后面进行处理。

除了将 Internet Explorer 窗口居中之外,我们还将光标设置为沙漏时需来强调这样一个事实:用户需要等待一会儿。可使用以下这行代码来执行该操作:

objExplorer.Document.Body.Style.Cursor = "wait"

在脚本中后面的部分,我们将光标设置为默认,这样可消除沙漏,使光标重新变为标准的箭头光标。

修改后的新脚本如下所示:

On Error Resume Next



strComputer = "."

Set objWMIService = GetObject("Winmgmts://" & strComputer & "/root/cimv2")

Set colItems = objWMIService.ExecQuery("Select * From Win32_DesktopMonitor")

For Each objItem in colItems

    intHorizontal = objItem.ScreenWidth

    intVertical = objItem.ScreenHeight

Next



Set objExplorer = CreateObject _

    ("InternetExplorer.Application")



objExplorer.Navigate "about:blank"   

objExplorer.ToolBar = 0

objExplorer.StatusBar = 0

objExplorer.Left = (intHorizontal - 400) / 2

objExplorer.Top = (intVertical - 200) / 2

objExplorer.Width = 400

objExplorer.Height = 200 

objExplorer.Visible = 1             



objExplorer.Document.Body.Style.Cursor = "wait"



objExplorer.Document.Title = "Logon script in progress"

objExplorer.Document.Body.InnerHTML = "Your logon script is being processed. " _

    & "This might take several minutes to complete."



Wscript.Sleep 10000



objExplorer.Document.Body.InnerHTML = "Your logon script is now complete."



objExplorer.Document.Body.Style.Cursor = "default"



Wscript.Sleep 5000



objExplorer.Quit

您还觉得不够别致吗?好吧,另一个增添花样的方法就是在您的 InnerHTML 中使用 .GIF 动画。例如,下面这行代码除显示一条消息之外,还显示一个 .GIF 动画:

objExplorer.Document.Title = "Logon script in progress"

objExplorer.Document.Body.InnerHTML = "<img src='file:///C:/Scripts/watch.gif'> " & _

    "Your logon script is being processed. This might take several minutes to complete."

最终结果为:

Internet Explorer

这可能称不上艺术品,但我们认为绝对可以说这是“在代码执行时执行一些有趣的操作”。另外,请记住,您可以更改图片的对齐方式,还可以更改字体的大小和颜色 -- 您可以进行任何 HTML 允许您进行的操作。

附注。若想在代码执行时进行一些真正有趣的操作,请访问 Dr. Scripto’s Fun Zone(Dr. Scripto 的乐园),学习如何在您的脚本中结合使用 Microsoft 代理技术。

【转自世纪安全网 http://www.21safe.com】
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    CSO们如何应对新技术的安
    普通企业如何应对黑客攻
    企业该如何防范由VoIP引
    浅谈IT如何实现企业的应
    黑客与正规企业是如何串
    如何无限制申请Gmail 2.
    企业如何避免人为因素的
    社会工程学:如何利用黑客
    如何在一个文件被添加到
    如何将“珊瑚虫”好友请

    Copyright © 2006-2008 www.anquan365.com 安全365
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览