top
Loading...
ASP連接執行程序
一、需求
當前,使用ASP開發動態網頁,客戶端使用微軟公司的IE系列瀏覽器查看是一種很流行的模式。我們在開發過程中遇到了這樣的一個問題,由于技術和時間上的限制,必須在網頁中調用一個執行程序。你當然可以用一個超級鏈接直接指向所需的程序,但這樣做會被微軟“黑”一下的:每次在IE中打開這個鏈接時就會出現一個不受歡迎的警告框(當然,它有它的道理,主要是出于安全方面的考慮),這對用戶來說是很能接受的。能不能用一個很方便、簡潔的方法來解決這個問題呢?
經過一番研究,出臺了一個被稱為“李代桃僵”的方法:
l 在系統中創建一種特定的文件類型,如:*.spa;
2 將該類型的文件與要在ASP中執行的程序關聯起來;
3 超級鏈接指向一個設定的擴展名是“spa”的文件。
這種做法的原理是:在IE中通過超級鏈接打開一個文件時,如果瀏覽器自身能解釋該類型的文件,文件的內容直接顯示在瀏覽器中,如文本文件,否則就搜索注冊表中設置,找出處理這種類型文件的程序,然后調用相應的程序打開該文件。
二、方法
具體的實現方法為手工和自動兩種方式,如下所示:
(一)、手工設置
l 打開資源管理器,如圖1所示,點擊[查看]菜單中的[文件夾選項]菜單,系統顯示[文件夾選項]對話框,如圖2 所示,其中有[文件類型]頁;

注意:須選中某個文件或文件夾,如果選中提[打印機]或[控制面板]等該對話框沒有這一頁

2 點擊[新建類型(N)…]按鈕,打開[添加新文件類型]對話框,如圖3所示。在[類型說明]文本框中輸入“ASP關聯”,在[相關擴展名]文本框中輸入“.spa”;(注:[內容類型]是用做選擇已經安裝的程序關聯某種類型的文件,該框不填)

3 打開”,點擊[瀏覽(R)…]按鈕,在對話框中選擇要在ASP中調用的程序。

4 點擊每個對話框的[確定]的按鈕即可完成;

特別注意:如圖3所示的[添加新文件類型]對話框的下方面有一個[下載后確認打開]選項。該選項在默認狀態下是被選中的,這種情況下,在網頁中初次打開“.spa”類型的文件時,系統會給出提示框詢問是否繼始終用某個程序打開該類型的文件。如果連這個框也不想出,則須將[下載后確認打開]選項置于非選中狀態

設置完成后,超級鏈接指向一個文件,如a.spa,再點擊一次,你就會看到你需要的程序不講任何條件就運行起來了!
自動設置
很顯然,系統編制完成交到用戶手中時,如果還要求用戶做上述設置是不現實的,軟件的生存能力會大打折扣,因為沒有幾個人會愿意聽擴展名和注冊表的。那么就必須讓述的工作自動完成。
在手工設置的程序與文件關聯后,所有相關的信息都存在了注冊表中,因此只要在注冊表中寫入相同的內容即可實現關聯可執行程序的功能。在注冊表中寫入一些信息對現有的編程軟件來說是一件比較簡單的事情,象VB和Delphi都提供了完整的存取注冊表內容的的函數,另外打包工具通常也是提供寫注冊表的功能的。那么如何在注冊表中找到對應的信息呢。該當方法如下:
l 打開注冊表編輯器(點擊開始菜單中的運行,在文件框中輸入“regedit”,回車);
2 點擊注冊表編輯器中的[編輯]菜單中的[查找]菜單項,在[查找目標]文本框中輸入“.spa”,然后開始查找,很快就會找到一個名叫“.spa”的主鍵,它有一個默認的字符串值“spafile”。點擊[注冊表]菜單中的[導出注冊表文件],將該主鍵的設置導出到一個文件中,如“spa1.reg”;
4 再次使用[編輯]菜單中的[查找]菜單項,在[查找目標]文本框中輸入“spafile”,然后開始查找,很快就會找到一個名叫“spafile”的主鍵,它有“Shell”等子鍵,采用上一步同樣的方法,將該主鍵的設置導出到一個文件中,如“spa2.reg”
現在只需打開這兩個文件,參照其中的設置寫幾行程序,工作就完成了!

3.附兩個注冊表文件的內容
l spa1.reg
[HKEY_CLASSES_ROOT.spa]
@="spafile"
注:“@”是默認的意思

l spa2.reg
[HKEY_CLASSES_ROOTspafile]
@="ASP關聯"
"EditFlags"=hex:00,00,01,00

[HKEY_CLASSES_ROOTspafileShell]
@=""

[HKEY_CLASSES_ROOTspafileShellopen]
"EditFlags"=hex:01,00,00,00

[HKEY_CLASSES_ROOTspafileShellopencommand]
@="C:\WINDOWS\Notepad.exe %1"

北斗有巢氏 有巢氏北斗