有很多深受歡迎的軟件,如ARJ,UNDISK等都是在DOS環(huán)境下以命令行的形式出現(xiàn)的。其特點就是依靠大量的參數(shù)和開關(guān)變量來實現(xiàn)其豐富的功能。利用Visual Basic可以簡單地把此類軟件改寫成WINDOWS版本,其中大量的開關(guān)參數(shù)可用菜單、列表框、組合框和復選框等一一映射成圖形界面。而命令的調(diào)用。可以用VB提供的SHELL函數(shù),其語法為:
shell(命令字符串[,窗口風格]) 如以下VB小程序: Sub Command3D1_Click () Dim x x = Shell("c: oolsarj.exe a a:demo c:demo*.*") End Sub 但使用SHELL函數(shù) 會出現(xiàn)WINDOWS界面和DOS黑色界面的突然切換,顯得不美觀。如何解決這個問題呢?使用WINDOWS的API函數(shù)WinExec,可以在隱含的窗體中啟動應用程序,使命令行程序完全在后臺執(zhí)行。下面給出一例,將ARJ完全WINDOWS化,其效果完全可以亂真。 Sub Command1_Click ( ) Dim cmd As String Dim hWnd As Integer cmd = "c:dosARJ.pif " & list1.Text & " -" & LIST2.Text & hWnd = WinExec(cmdline, 0) ’參數(shù)為0則隱藏窗體 If HWND $#@60; 32 Then ’hWin$#@60;32則啟動應用程序失敗 MsgBox "error!" Exit Sub End If While GetModuleUsage(HWND%) mousepointer = 11 ‘鼠標呈沙漏狀 WAIT% = DoEvents() Wend mousepointer = 1 ’鼠標復原為箭頭 End Sub 在此例中,筆者使用了WINDOWS的PIF編輯器將ARJ.EXE編輯成ARJ.PIF,是因為類似ARJ這樣的軟件是以全屏方式執(zhí)行的,而WINEXEC函數(shù)只能隱藏以窗體方式運行的程序。在編輯PIF文件時顯示方式選擇“窗口”,執(zhí)行方式選擇“后臺”,這樣就解決了上面提到的界面突換的問題。而調(diào)用API函數(shù)GetModuleUsage以獲得應用程序結(jié)束的標志,若運行完畢則返回TRUE,若未運行完畢則讓出CPU控制權(quán),為運行ARJ提供時機。這樣的小程序完全可以實現(xiàn)命令行軟件的WINDOWS化,而且運行起來真假難辨,有興趣的讀者不妨試一試。 |
|