當前位置:學問君>人在職場>電腦培訓>

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

學問君 人氣:9.26K

問:

怎麼用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消息框。不過這個問題我們將在其他時間討論。