如何使一个HTA位于屏幕中心(Win32_DesktopMonitor)_hta

我们可以调整(如果需要)窗口大小并使其居中,但这样做时会在屏幕上出现瞬间的闪烁。这并不是太明显,其实际结果就是你所期望的:HTA 会位于屏幕中心。我们希望这个过程变得稍微流畅些,但目前我们不得不使用此方法。
下面是 HTA 示例的代码。(若要实现此过程,请复制该代码,并将其粘贴到记事本中,然后以 .hta 为文件扩展名保存该文件。)我们担心的部分(也是唯一真正有用的部分)是 Window_Onload 子例程,每当 HTA 被加载或更新时,该子例程就自动运行:

复制代码 代码如下:

<html>
<head>
<title>Centered HTA</title>
<HTA:APPLICATION
ID="objHTA"
APPLICATIONNAME="Centered HTA"
SCROLL="yes"
SINGLEINSTANCE="yes"
>
</head>
<SCRIPT Language="VBScript">
Sub Window_Onload
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
intLeft = (intHorizontal - 800) / 2
intTop = (intVertical - 600) / 2
window.resizeTo 800,600
window.moveTo intLeft, intTop
End Sub
</SCRIPT>
<body></body>
</html>

启动此 HTA - 一个快速闪烁之后 - 窗口将调整为 800x600 像素,并将位于屏幕中心。

好问题:这里将要发生什么?我们先使用一些标准 WMI 代码,连接到本地计算机上的 WMI 服务,然后查询 Win32_DesktopMonitor 类。

注意。我们假定您的计算机只连接了一台显示器。如果您有多台显示器,您将必须添加一个 WHERE 子句来确保您将检索主显示器的屏幕高度和宽度。

连接到 Win32_DesktopMonitor 类后,我们将使用下列两行代码来确定当前屏幕的尺寸:

复制代码 代码如下:

intHorizontal = objItem.ScreenWidth
intVertical = objItem.ScreenHeight

我们已经事先决定,想让 HTA 窗口的宽度为 800 像素,高度为 600 像素。因此,我们可以使用以下代码计算出需要将该窗口的左上角放在什么位置:

复制代码 代码如下:

intLeft = (intHorizontal - 800) / 2
intTop = (intVertical - 600) / 2

正如您所看到的,我们将获得屏幕宽度(存储在 intHorizontal 变量中)并减去 800 像素(HTA 窗口的水平尺寸)。假定我们有一台分辨率为 1024x768 的显示器。1024 减去 800 得 224:这告诉我们屏幕比 HTA 窗口宽多少。若要使该窗口居中,我们只需确保每个边为 112 像素;这就是用 224(即 intHorizontal – 800)除以 2 的原因。

然后,对于屏幕高度,重复该过程。对于我们的示例显示器,得到的是 768 – 600(即 168),然后除以 2 得到 84 像素(即该窗口上下边的尺寸)。

这样,我们还需要做两项工作。第一,将窗口调整到 800x600 像素:

window.resizeTo 800,600

第二,相应地放置窗口。这就是我们现在要做的:

window.moveTo intLeft, intTop

我们要做的所有事情就是调用 moveTo 方法并移动 HTA 窗口,使其左上角位于距左侧 112 像素、距顶端 84 像素的位置。

顺便说一下,我们将 resizeTo 方法放在该子例程底端附近,以供教学之用:我们想要将 resizeTo 与 moveTo 一起讲述。然而,当您通过调整窗口启动子程序时,将有一个轻微的、不太明显的闪烁:

复制代码 代码如下:

Sub Window_Onload
window.resizeTo 800,600
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
intLeft = (intHorizontal - 800) / 2
intTop = (intVertical - 600) / 2
window.moveTo intLeft, intTop
End Sub

这不是个大问题,但有些帮助。我们会继续寻找消除闪烁的方法。(为什么如此困难?理想状态下,在调整和移动 HTA 窗口之前,我们会将其隐藏,这可以使用 Internet Explorer 来执行。然而,我们还没有找到一种使用 HTA 来执行该操作的方法。但我们从未放弃。)

时间: 2024-09-23 16:49:10

如何使一个HTA位于屏幕中心(Win32_DesktopMonitor)_hta的相关文章

微软将在爱荷华州建立另一个巨大的数据中心

日前,微软公司已经透露其在爱荷华州西得梅因建设的一个神秘项目,这个项目是一个巨大的数据中心基础设施. 微软公司表示,该公司还将获得爱荷华经济发展局董事会对其项目第一阶段的470万美元的奖励.而微软公司对于这个数据中心项目预计将投资4亿1770万美元.此外,建设这个数据中心将至少提供57个工作岗位,其中11个工作岗位的时薪至少为27.92美元一小时. 当地消息人士告知,微软公司在西得梅因建设的数据中心项目位于Maffitt水库和35号州际公路的西南方,在沃伦大道和105街的附近. 这是微软公司在爱

周超男:我国正在进入一个大规模的数据中心建设时期

第2届"2012中国数据中心产业发展大会"于20112年月17日在北京举行,润泽科技发展有限公司董事长周超男在会上表示数据中心的建设,数据存储技术的发展,已经成为人类面临的一个挑战之一.随着数据存储和应用市场的快速发展,我国正在进入一个大规模的数据中心建设时期.以下是周超男董事长的演讲全文: 润泽科技发展有限公司董事长周超男 周超男:首先我代表润泽科技发展有限公司热烈祝贺本次大会的胜利召开,并衷心祝贺本次大会取得丰硕的成果.本届大会以中国数据中心产业发展为主题,反映了我国信息产业发展面

《响应式Web设计:HTML5和CSS3实践指南》——1.4节使视频自适应于屏幕宽度

1.4 使视频自适应于屏幕宽度 流媒体视频同样可以为响应式的.在HTML5页面中嵌入响应式视频是一件非常简单的事情.如video标签支持百分比的宽度设置,但是问题在于,该方案需要网站主机拥有对应的视频源.如果已经有视频源,那么一切都易如反掌. 不过,使用视频托管网站(如YouTube或Vimeo)比自己托管更具优势.首先,自己的托管服务器可能会受到带宽或磁盘空间的限制.其次,相比于使用自己的托管服务器,使用视频托管网站上传可用的Web视频的整个过程更加便捷. 1.4.1 准备工作 视频托管网站允

苹果已在美国开建一个全新的数据中心

北京时间4月20消息,据国外媒体报道,苹果已在美国俄勒冈州普赖恩维尔破土动工开建一个全新的数据中心.该公司声称,这个数据中心将比其位于北卡罗来纳州梅登的数据中心更加环保,使用100%的可再生能源. 在梅登数据中心建成后,它将拥有一个沼气燃料电池厂和一个巨大的太阳能电池阵,它们合起来能够产生1200万瓦特能源,可以满足该数据中心60%的需求.但是,苹果对普赖恩维尔数据中心的期望值更高.苹果发言人克里斯汀-休杰特(Kristin Huguet)声称,梅登数据中心将很快成为"最绿色环保的数据中心,与此

亚马逊:将在每一个大国建立数据中心

亚马逊:将在每一个大国建立数据中心11月13日消息,据国外媒体报道,亚马逊计划今后在全球每一个大国都建立数据中心,作为该公司范围更为广泛的投资推动战略的一部分,最终将使这家互联网零售商的云计算业务成为其最大的业务.亚马逊高级副总裁."亚马逊网络服务"(AmazonWeb,Services,简称AWS)部门主管安迪·杰西(Andy,Jassy)周三与记者举行圆桌会议,但他没有提供完成这些投资的时间表.AWS部门为企业客户提供基于网络的计算能力和数据管理.杰西表示,亚马逊打算继续向&quo

jquery做的一个简单的屏幕锁定提示框

 这篇文章主要介绍了使用jquery做的一个简单的屏幕锁定提示框,需要的朋友可以参考下 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml"&

全显示成正数-安卓开发中如何使一个byte类型的数组内的数据不显示成负数

问题描述 安卓开发中如何使一个byte类型的数组内的数据不显示成负数 在做Android开发的时候一个byte类型的数组result,里面有比较大的正数,需要做什么样的处理才能使他显示的全是正数:求大神指导,给个代码 byte[] result for (int i = 0; i < result.length; i++) Log.e("读出全部page", "byte " + i + " is " + result[i]); 解决方案 f

直接使用-求css带代码,美化我的网站。包括字体样式,颜色,按钮,文本框登。使一个普通的网站变得漂亮。

问题描述 求css带代码,美化我的网站.包括字体样式,颜色,按钮,文本框登.使一个普通的网站变得漂亮. 由于本人美观性不咋样,所以求大神赐一段css代码,我直接用就行了.大神拜托了! 解决方案 关键在于协调.如果你认为字体和大小是一成不变的,你完全可以用IE打开一个网站,然后按F12,将光标移动到你需要捕获的位置,然后在css窗口看到所用的样式. 解决方案二: css和html是紧密相关的,没法做到"直接用".除非那种完全针对html tag而不包含任何伪类和针对id的样式表,这不现实

android-Android 如何判断一个View在屏幕上可见

问题描述 Android 如何判断一个View在屏幕上可见 Android 如何判断一个View在屏幕上可见 我的过滤条件是这样的: view.isEnabled() && view.isShown() && view.isClickable() 可是这样即使某个View在下层不可见 .或者不可点击也能通过条件 解决方案 需要隐藏时,设置View的visible,后面根据visible判断 解决方案二: View 是放在 Activity 中显示的,所以按 Activity