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

來源:文萃谷 1.12W

問:

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

熱門標籤