如何使一個(gè)HTA位于屏幕中心(Win32_DesktopMonitor)
我們可以調(diào)整(如果需要)窗口大小并使其居中,但這樣做時(shí)會(huì)在屏幕上出現(xiàn)瞬間的閃爍。這并不是太明顯,其實(shí)際結(jié)果就是你所期望的:HTA 會(huì)位于屏幕中心。我們希望這個(gè)過(guò)程變得稍微流暢些,但目前我們不得不使用此方法。
下面是 HTA 示例的代碼。(若要實(shí)現(xiàn)此過(guò)程,請(qǐng)復(fù)制該代碼,并將其粘貼到記事本中,然后以 .hta 為文件擴(kuò)展名保存該文件。)我們擔(dān)心的部分(也是唯一真正有用的部分)是 Window_Onload 子例程,每當(dāng) HTA 被加載或更新時(shí),該子例程就自動(dòng)運(yùn)行:
<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>
啟動(dòng)此 HTA - 一個(gè)快速閃爍之后 - 窗口將調(diào)整為 800x600 像素,并將位于屏幕中心。
好問(wèn)題:這里將要發(fā)生什么?我們先使用一些標(biāo)準(zhǔn) WMI 代碼,連接到本地計(jì)算機(jī)上的 WMI 服務(wù),然后查詢 Win32_DesktopMonitor 類。
注意。我們假定您的計(jì)算機(jī)只連接了一臺(tái)顯示器。如果您有多臺(tái)顯示器,您將必須添加一個(gè) WHERE 子句來(lái)確保您將檢索主顯示器的屏幕高度和寬度。
連接到 Win32_DesktopMonitor 類后,我們將使用下列兩行代碼來(lái)確定當(dāng)前屏幕的尺寸:
intHorizontal = objItem.ScreenWidth
intVertical = objItem.ScreenHeight
我們已經(jīng)事先決定,想讓 HTA 窗口的寬度為 800 像素,高度為 600 像素。因此,我們可以使用以下代碼計(jì)算出需要將該窗口的左上角放在什么位置:
intLeft = (intHorizontal - 800) / 2
intTop = (intVertical - 600) / 2
正如您所看到的,我們將獲得屏幕寬度(存儲(chǔ)在 intHorizontal 變量中)并減去 800 像素(HTA 窗口的水平尺寸)。假定我們有一臺(tái)分辨率為 1024x768 的顯示器。1024 減去 800 得 224:這告訴我們屏幕比 HTA 窗口寬多少。若要使該窗口居中,我們只需確保每個(gè)邊為 112 像素;這就是用 224(即 intHorizontal – 800)除以 2 的原因。
然后,對(duì)于屏幕高度,重復(fù)該過(guò)程。對(duì)于我們的示例顯示器,得到的是 768 – 600(即 168),然后除以 2 得到 84 像素(即該窗口上下邊的尺寸)。
這樣,我們還需要做兩項(xiàng)工作。第一,將窗口調(diào)整到 800x600 像素:
window.resizeTo 800,600
第二,相應(yīng)地放置窗口。這就是我們現(xiàn)在要做的:
window.moveTo intLeft, intTop
我們要做的所有事情就是調(diào)用 moveTo 方法并移動(dòng) HTA 窗口,使其左上角位于距左側(cè) 112 像素、距頂端 84 像素的位置。
順便說(shuō)一下,我們將 resizeTo 方法放在該子例程底端附近,以供教學(xué)之用:我們想要將 resizeTo 與 moveTo 一起講述。然而,當(dāng)您通過(guò)調(diào)整窗口啟動(dòng)子程序時(shí),將有一個(gè)輕微的、不太明顯的閃爍:
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
這不是個(gè)大問(wèn)題,但有些幫助。我們會(huì)繼續(xù)尋找消除閃爍的方法。(為什么如此困難?理想狀態(tài)下,在調(diào)整和移動(dòng) HTA 窗口之前,我們會(huì)將其隱藏,這可以使用 Internet Explorer 來(lái)執(zhí)行。然而,我們還沒(méi)有找到一種使用 HTA 來(lái)執(zhí)行該操作的方法。但我們從未放棄。)
- python使用win32com在百度空間插入html元素示例
- win32使用openfilename瀏覽文件窗口示例
- python字符串加密解密的三種方法分享(base64 win32com)
- c#用Treeview實(shí)現(xiàn)FolderBrowerDialog 和動(dòng)態(tài)獲取系統(tǒng)圖標(biāo)(運(yùn)用了Win32 dll類庫(kù))
- WMI中的Win32_PingStatus類(ping命令實(shí)現(xiàn))
- nginx win32 版本靜態(tài)文件測(cè)試 (Windows環(huán)境)
- win32安裝配置非安裝版的MySQL
- iis Win32狀態(tài)數(shù)值(sc-win32-status)說(shuō)明
- PSW.Win32.Magania.ffw(F3C74E3FA248.exe)病毒的清除
- Worm.Win32.AutoRun.bqn病毒分析解決
- inst.exe,Setup.exe木馬Trojan-PSW.Win32.Magania.cjy解決方法
- Downloader Win32.Delf.dqu(IRAT.rmvb,mm.exe)分析查殺
- 木馬程序Trojan-Spy.Win32.Agent.cfu清除方法
- MSN圣誕照片(Backdoor.Win32.PBot.a)病毒分析解決
- 木馬下載器Win32.TrojDownloader.Delf.114688
- recycle.exe(Trojan-Dropper.Win32.VB.rj)病毒的查殺方法
- Backdoor.Win32.IRCBot.afm(video.exe)病毒的處理方法
- win32 api實(shí)現(xiàn)簡(jiǎn)單的消息窗口示例
相關(guān)文章
A notepad made in HTA(hta實(shí)現(xiàn)的記事本)
這個(gè)記事本可以在Win9x中運(yùn)行,并且處理更大的文件。可以通過(guò)修改html修改頁(yè)面,喜歡學(xué)習(xí)hta的朋友可以參考下2013-07-07hta實(shí)現(xiàn)的定時(shí)重啟或關(guān)閉計(jì)算機(jī)的小工具
一個(gè)用于定時(shí)重啟或關(guān)閉計(jì)算機(jī)的小工具,適用于Windows 2K/XP/20032008-06-06VBS腳本的GUI界面 HTA簡(jiǎn)明教程(網(wǎng)絡(luò)搜集整理)
HTA是HTML Application的縮寫(HTML應(yīng)用程序),是軟件開發(fā)的新概念,直接將HTML保存成HTA的格式,就是一個(gè)獨(dú)立的應(yīng)用軟件,雙擊就能運(yùn)行,與VB、C++等程序語(yǔ)言所設(shè)計(jì)的軟件沒(méi)什么差別。2009-08-08hta實(shí)現(xiàn)的二進(jìn)制文件轉(zhuǎn)換為文本
hta 二進(jìn)制文件轉(zhuǎn)換為文本工具2008-06-06