国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

使用調用外部程序函數實現API函數高級功能

2019-11-18 17:34:22
字體:
來源:轉載
供稿:網友
摘要本文以VisualBasic為例,介紹了在使用調用外部程序的辦法實現以下五種功能的方法:1)關機和重新啟動;2)使用缺?。J)的程序打開文件或鏈接;3)調用"資源管理器";4)復制和移動文件夾;5)把DOS程序的屏幕顯示信息寫入文件。
關鍵詞VisualBasic,Shell函數,外部程序

調用調用API函數可直接使用Windows底層資源,因此功能強大。然而API函數使用較復雜,易出錯。本文將以VisualBasic6.0中的shell函數為例,詳細說明調用外部程序實現一些windows高級功能的方法。
一、關機和重新啟動Windows
在"開始-運行"對話框或DOS窗口中輸入rundll.exeuser.exe,exitwindowsexec命令,Windows就會重新啟動;輸入rundll.exeuser.exe,exitwindows,機器關閉。
所以您在VisualBasic中使用下面兩個命令來實現重起和關機:
Shell"rundll.exeuser.exe,exitwindowsexec",vbHide'重新啟動
Shell"rundll.exeuser.exe,exitwindows",vbHide'關閉
二、使用缺省(默認)的程序打開文件或鏈接
在Windows的Command子目錄中有一個Start.exe,在這個命令后加上一個文件名參數,該文件即可用缺省程序打開。所以在VisualBasic中可使用下面的代碼:
DimFiletoOpen$
FiletoOpen="system.ini"
Shell"Start.exe"&FiletoOpen,vbHide
注意:1)如果變量FiletoOpen的值為包含長文件名的字符串,以上第三行應為
Shell"Start.exe"&Chr(34)&FiletoOpen&Chr(34)'Chr(34)為雙引號。
這是因為當參數中的長文件名含有空格時,程序會認為空格以前的部分子符串為一個參數,所以會產生找不到文件的錯誤。例如要用WinWord.exe打開"C:/mydocuments/mydoc.doc"時,如果在"運行"對話框中輸入start.exec:/mydocuments/mydoc.doc,系統尋找的文件是c:/my和documents/mydoc.doc兩個文件,所以會出錯。正確的命令應當是start.exe"c:/mydocuments/mydoc.doc"
2)在上面第三行中,Start.exe后別忘了留空格。
另外程序員也常常希望用戶能點擊軟件上的鏈接而直接打開自己的主頁或給自己寫信。用下面的方法可以不另外添加控件而實現這種功能。
Dimurl$,email$
url="nwdonkey.uhome.net"
email="mailto:nwdonkey@371.net"
shell"start.exe"&url,vbHide
shell"start.exe"&email,vbHide
三、調用"資源管理器"
用下面的命令可調用Windows資源管理器,并打開指定的文件夾:
DimPathtoOpen$
PathtoOpen="c:/mydocuments"
Shell"explorer.exe"&PathtoOpen,vbNormalFocus
四、復制和移動文件夾
是不是很懷念強大的DOS命令?其實所有的DOS外部命令所能實現的功能,您都能在VB中通過Shell函數來實現。比如您要把一個子目錄的包含下一級目錄的所有文件復制到另一個位置,可使用下面的代碼:
IfDir$("c:/mydos",vbDirectory)=""ThenMkDir"c:/mydos"'在硬盤上新建一個c:/mydos的文件夾。
Shell"xcopy.exec:/windows/command/*.*c:/mydos/s/e",vbHide
Shell"explorer.exe"&"c:/mydos",vbNormalFocus
同樣我們也以用shell來調用move.exe來實現來實現文件或文件夾的移動。
說明:此方法僅限于外部DOS命令,并需要把參數中的長文件名轉換為8.3制文件名,轉換似乎可以用API函數實現,我們自己編寫了不調用API函數實現這一功能的函數,您如果需要請到http://go.163.com/
~nwdonkey/vb/去下載。
Contributor:NorthWestDonkey
五、把DOS程序的屏幕顯示信息寫入文件
Shell函數不支持DOS內部命令,要想在VB中使用DOS內部命令,就得使用迂回的辦法:先把DOS命令寫到一個BAT文件中,然后再用Shell函數調用該BAT文件。如果您是編寫DOS批處理的高手,則完全可以先編寫好BAT文件,然后再用Shell函數來調用。另外,大家還記得DOS命令中的管道命令符吧?例如〈和〉號可以把一個文件的內容傳遞到另一個程序中去,也可把DOS應用程序的屏幕輸出寫到一個文件中去。例如用下列代碼可把DOS命令copy的幫助信息寫到一個文件中去。
Open"c:/test.bat"ForOutputAs#1'建立批處理文件
這種方法可以把dos程序中顯示在屏幕上的信息寫入一個文件,因此對編寫一些dos應用程序的windows版本特別有用。
以上以VisualBasic為例,講述了巧用Shell函數實現一些一般不容易實現的功能的方法。一般情況下,其他編程語言也都提供了類似的函數接口,在這些編程環境下也可以輕易實現上述功能。對本文,您如有什么問題請寄信到nwdonkey@371.net或到我的主頁http://nwdonkey.uhome.net/上留言。
->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 依安县| 阿合奇县| 东阿县| 镇宁| 青田县| 洪洞县| 黔南| 杂多县| 云林县| 白河县| 托里县| 白玉县| 资阳市| 平原县| 大化| 吴堡县| 乾安县| 乡城县| 漯河市| 新干县| 天峻县| 广平县| 崇左市| 黑山县| 庐江县| 荥阳市| 肥乡县| 安徽省| 双流县| 霍城县| 施甸县| 烟台市| 杭州市| 湖南省| 格尔木市| 海南省| 冀州市| 扬中市| 苏尼特右旗| 巴中市| 大姚县|