Share via


嗨,Scripting Guy!

Hey,Scripting Guy!

歡迎使用全新的 TechNet 專欄,Microsoft Scripting Guy 會在此為您解答有關系統管理指令碼的常見問題。您有關於系統管理指令碼方面的問題嗎?請將電子郵件傳送到 scripter@microsoft.com。我們無法保證能夠逐一回答每個問題,不過我們會盡力而為。

今天的問題:我要如何在訊息方塊中顯示超連結?


我要如何在訊息方塊中顯示超連結?

嗨,Scripting Guy!是否有可能在訊息方塊中顯示網頁的超連結?

-- CB

CB,您好。聽起來您想要對使用者顯示訊息方塊,而且您希望最理想的情況是能在訊息方塊中包含超連結,好讓使用者能夠按一下以取得詳細資訊。例如:假設使用者嘗試存取某些資源,卻遭到了拒絕。在此情況下,您可以顯示一個訊息方塊告知使用者存取遭到拒絕,然後提供他們網頁的連結,以便告知他們需要做些什麼才能存取資源。這樣整體看來,會比只告訴他們「拒絕存取」要好得多。

那麼您是否可以用指令碼語言辦到這點?嗯,不能。就我們所知這是不可能的。在訊息方塊中顯示超連結會是很棒的,不過在使用指令碼語言時,您相當受限於基本的訊息方塊。

不過等一下,請還不要離開!您沒有問我們:「是否有任何因應措施,雖然不在訊息方塊中內嵌超連結,卻能達成相同的效果?」如果您對我們提出這樣的問題,我們就會告訴您:「放心吧,永遠都會有因應措施的。」您所要求的是從訊息方塊按一下就能存取網頁。在訊息方塊中內嵌超連結是做到這點的一種方法。不幸的是,如同我們表示過的,您無法運用 VBScript 做到這點。所以,讓我們嘗試另一種方法:為何不顯示一個訊息方塊,然後詢問:「您是否要申請存取這項資源?」。如果使用者按一下 [否],指令碼便會終止。如果使用者按一下 [是],指令碼就會自動將使用者帶到適當的網頁。只要一個訊息方塊,按一下即可存取網站。這和使用超連結的確不太相同,不過最後的結果還是一樣的。

如您所見,只需要幾行程式碼就能辦到這點:

Set objShell = CreateObject("Wscript.Shell")
intMessage = Msgbox("Would you like to apply for access to this resource?", _
    vbYesNo, "Access Denied")
If intMessage = vbYes Then
    objShell.Run("http://www.microsoft.com")
Else
    Wscript.Quit
End If

我們從建立 WSH Shell 物件的例項開始,這麼做才能顯示網頁瀏覽器並連結到網站。然後,我們顯示一個訊息方塊 (標題為「拒絕存取」(Access Denied)),並詢問:「您是否要申請存取這項資源?」(Would you like to apply for access to this resource?)這個訊息方塊會有一個 [是] 按鈕和 [否] 按鈕,這也就是 VBScript 常數 vbYesNo 的作用。

注意:您們有些人可能在想:「等等,我以為在 VBScript 必須明確定義常數。」這在「大多數」狀況下都是這樣沒錯。例如:如果使用 FileSystemObject,我們就需要使用如下的程式碼定義常數:

Const ForReading = 1

不過,VBScript 擁有自己的內建常數。vbYesNo 就是其中一個,可以用來顯示訊息方塊中的 [是] 和 [否] 按鈕。vbCrLf 則是另一個,可以用來在字串的結尾附加換行符號。這些內建常數是 VBScript 語言的一部分,所以都不需要定義。當您輸入 vbYesNo 時,VBScript 就會知道它的作用。

現在,我們說到哪裡了?噢,是的。我們顯示一個訊息方塊,並讓使用者能夠選擇 [是] 和 [否] 按鈕。如果使用者按一下 [是],我們就會將他們帶到指定的網站。我們如何能夠知道他們是否按了 [是]?這是很容易的:在建立訊息方塊時,我們將使用者的回應儲存在變數 intMessage 之中。如果想要判斷使用者所按下的按鈕,我們只需要檢查 intMessage 的值。如果其值等於 vbYesNo (另一個內建常數,其值等於 6),使用者就按了一下 [是],我們便會使用 Shell 物件的 Run 方法來開啟網站 https://www.microsoft.com (請注意,我們只需要指定 URL,作業系統就會使用預設的瀏覽器來瀏覽該網站)。

那麼如果使用者按的是 [否] 呢?在此情況下,我們就會結束 (Wscript.Quit)。

如同我們之前說的,這的確不是您想到的方法,不過也一樣有效。

順便一提,如果要瞭解關於 VBScript 的 Msgbox 函式的詳細資訊,以及設定此函式的不同方法,請參閱 MSDN 上這個部分的 VBScript 語言參照 (英文)。

如果您需要建立真正精緻的訊息方塊,又該怎麼辦呢?在此情況下,您可以為自己建立一個 HTML 網頁,以便模仿真正的 Windows 訊息方塊。不過這就有待改天再加以說明了。


如需詳細資訊

查看嗨,Scripting Guy!- 過往文件

 

回到頁首 回到頁首