怎麼用vbscript實現在訊息框中顯示一個超連結

才智咖 人氣:9.06K

問:

怎麼用vbscript實現在訊息框中顯示一個超連結

嗨,ScriptingGuy!可以在訊息框中包含指向某個Web頁面的超連結嗎?

--CB

答:

嗨,CB。聽起來您好像想要向用戶顯示一個訊息框,並且希望在訊息框中包含一個超連結,以便使用者可以點選這個連結,從而獲得更多資訊。例如,假設某個使用者試圖訪問一些資源,但被拒絕了。這種情況下,您可以彈出一個訊息框,告訴使用者訪問被拒絕,然後向他們提供一個連結,這個連結指向的頁面會告訴使用者訪問所需的許可權。一般說來,這種辦法會比簡單地說“訪問被拒絕”好得多。

那麼,是否可以用指令碼編寫語言實現這個目的呢?好吧,據我們所知,目前還不能。訊息框中含有超連結當然會很酷,但使用指令碼編寫語言則僅限於簡單的訊息框。

不過,先等等,別忙著離開!您並沒有問我們:“是否存在某種變通辦法可以實現相同目的,但不必在訊息框中嵌入超連結?”如果您這麼問,我們就會告訴您:“總會有變通辦法的。”您所尋求的就是從訊息框中實現對Web頁面的一鍵式訪問。一個方法就是在訊息框中嵌入超連結,但不幸的是,我們上面說過,使用VBScript無法實現上述目的。因此,我們試著使用其他辦法看看:為什麼不彈出一個訊息框,詢問使用者:“您是否想要申請訪問此資源?”呢?如果使用者點選否,那麼指令碼就會中止。如果使用者點選是,指令碼就會自動將使用者帶到合適的Web頁面。一個訊息框,一鍵式訪問網站。它和使用超連結並不十分相同,但結果卻是一樣的。

如您所見,這隻需要以下幾行程式碼就可以實現:

複製程式碼 程式碼如下:

SetobjShell=CreateObject("l")

intMessage=Msgbox("Wouldyouliketoapplyforaccesstothisresource?",_

vbYesNo,"AccessDenied")

IfintMessage=vbYesThen

("")

Else

EndIf

我們首先建立一個WSHShell物件例項;我們需要建立這個例項,以便彈出Web瀏覽器和連結到網站。然後,我們顯示訊息框(標題為訪問被拒絕),並詢問使用者:“您是否想要申請訪問此資源?”這個訊息框具有一個是按鈕和一個否按鈕,這就是VBScript常量vbYesNo的用途。

注意:有些人可能在想:“等等,我想您應該在VBScript中明確定義這些常量。”在大多數情況下,這是正確的。如果我們處理的是FileSystemObject(打個比方),那麼我們就需要使用類似如下程式碼定義常量:

ConstForReading=1

但是,VBScript有一些內部常量。vbYesNo恰好就是其中之一。它用於在訊息框中顯示“是”按鈕或“否”按鈕。vbCrLf則是另一個內部常量,它的作用是在字串末尾添加回車換行。這些內部常量——它們是VBScript語言的一部分——不必定義;在您輸入vbYesNo時,VBScript會知道您的意思。

我們剛才說到哪了?哦,對了,我們彈出一個訊息框,並向用戶提供是按鈕和否按鈕。如果使用者點選是,我們就將他們帶到指定的網站。那麼,如何知道使用者點選的是否為是呢?很簡單:當我們建立訊息框時,我們就將使用者響應儲存在變數intMessage中。因此,若要判斷使用者點了哪個按鈕,我們只要檢查intMessage的值就可以了。如果這個值等於vbYesNo(另一個內部常量,等於6),那麼使用者點選的便為是,於是我們就使用Shell物件的Run方法開啟網站。(注意,我們需要做的就是指定URL;然後操作系統就會使用預設瀏覽器導航到該站點。)

那如果使用者點選的為否呢?這種情況下,我們就會退出()。

恰如我們所說的,這個方法和我們想象中的.不完全一樣,但它可以實現這個目的。

順便說一下,如果您想了解有關VBScript的Msgbox函式以及配置這個函式的不同方式的更多資訊,請訪問MSDN上的“VBScript語言參考”。

那如果您需要製作精美一點的訊息框呢?這種情況下,您可以自己動手製作一個HTML頁面,然後使用這個頁面模擬真實的Windows訊息框。不過這個問題我們將在其他時間討論。