如何使一個HTA位于屏幕中心(Win32_DesktopMonitor)
來源:易賢網(wǎng) 閱讀:1144 次 日期:2014-08-12 16:07:37
溫馨提示:易賢網(wǎng)小編為您整理了“如何使一個HTA位于屏幕中心(Win32_DesktopMonitor)”,方便廣大網(wǎng)友查閱!

我們可以調(diào)整(如果需要)窗口大小并使其居中,但這樣做時會在屏幕上出現(xiàn)瞬間的閃爍。這并不是太明顯,其實際結(jié)果就是你所期望的:HTA 會位于屏幕中心。我們希望這個過程變得稍微流暢些,但目前我們不得不使用此方法。

下面是 HTA 示例的代碼。(若要實現(xiàn)此過程,請復(fù)制該代碼,并將其粘貼到記事本中,然后以 .hta 為文件擴(kuò)展名保存該文件。)我們擔(dān)心的部分(也是唯一真正有用的部分)是 Window_Onload 子例程,每當(dāng) 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 - 一個快速閃爍之后 - 窗口將調(diào)整為 800x600 像素,并將位于屏幕中心。

好問題:這里將要發(fā)生什么?我們先使用一些標(biāo)準(zhǔn) WMI 代碼,連接到本地計算機(jī)上的 WMI 服務(wù),然后查詢 Win32_DesktopMonitor 類。

注意。我們假定您的計算機(jī)只連接了一臺顯示器。如果您有多臺顯示器,您將必須添加一個 WHERE 子句來確保您將檢索主顯示器的屏幕高度和寬度。

連接到 Win32_DesktopMonitor 類后,我們將使用下列兩行代碼來確定當(dāng)前屏幕的尺寸:

代碼如下:

intHorizontal = objItem.ScreenWidth

intVertical = objItem.ScreenHeight

我們已經(jīng)事先決定,想讓 HTA 窗口的寬度為 800 像素,高度為 600 像素。因此,我們可以使用以下代碼計算出需要將該窗口的左上角放在什么位置:

代碼如下:

intLeft = (intHorizontal - 800) / 2

intTop = (intVertical - 600) / 2

正如您所看到的,我們將獲得屏幕寬度(存儲在 intHorizontal 變量中)并減去 800 像素(HTA 窗口的水平尺寸)。假定我們有一臺分辨率為 1024x768 的顯示器。1024 減去 800 得 224:這告訴我們屏幕比 HTA 窗口寬多少。若要使該窗口居中,我們只需確保每個邊為 112 像素;這就是用 224(即 intHorizontal – 800)除以 2 的原因。

然后,對于屏幕高度,重復(fù)該過程。對于我們的示例顯示器,得到的是 768 – 600(即 168),然后除以 2 得到 84 像素(即該窗口上下邊的尺寸)。

這樣,我們還需要做兩項工作。第一,將窗口調(diào)整到 800x600 像素:

window.resizeTo 800,600

第二,相應(yīng)地放置窗口。這就是我們現(xiàn)在要做的:

window.moveTo intLeft, intTop

我們要做的所有事情就是調(diào)用 moveTo 方法并移動 HTA 窗口,使其左上角位于距左側(cè) 112 像素、距頂端 84 像素的位置。

順便說一下,我們將 resizeTo 方法放在該子例程底端附近,以供教學(xué)之用:我們想要將 resizeTo 與 moveTo 一起講述。然而,當(dāng)您通過調(diào)整窗口啟動子程序時,將有一個輕微的、不太明顯的閃爍:

代碼如下:

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

這不是個大問題,但有些幫助。我們會繼續(xù)尋找消除閃爍的方法。(為什么如此困難?理想狀態(tài)下,在調(diào)整和移動 HTA 窗口之前,我們會將其隱藏,這可以使用 Internet Explorer 來執(zhí)行。然而,我們還沒有找到一種使用 HTA 來執(zhí)行該操作的方法。但我們從未放棄。)

更多信息請查看IT技術(shù)專欄

更多信息請查看腳本欄目
易賢網(wǎng)手機(jī)網(wǎng)站地址:如何使一個HTA位于屏幕中心(Win32_DesktopMonitor)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機(jī)號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機(jī)站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報警專用圖標(biāo)