用VB將命令行軟件Windows化

發表于:2007-07-14來源:作者:點擊數: 標簽:
劉強 有很多深受歡迎的軟件,如ARJ,UNDISK等都是在DOS環境下以命令行的形式出現的。其特點就是依靠大量的參數和開關變量來實現其豐富的功能。利用Visual Basic可以簡單地把此類軟件改寫成 WINDOWS 版本,其中大量的開關參數可用菜單、列表框、組合框和復選框
劉強

  有很多深受歡迎的軟件,如ARJ,UNDISK等都是在DOS環境下以命令行的形式出現的。其特點就是依靠大量的參數和開關變量來實現其豐富的功能。利用Visual Basic可以簡單地把此類軟件改寫成WINDOWS版本,其中大量的開關參數可用菜單、列表框、組合框和復選框等一一映射成圖形界面。而命令的調用??梢杂?STRONG>VB提供的SHELL函數,其語法為:
shell(命令字符串[,窗口風格])

如以下VB小程序:

Sub Command3D1_Click ()

Dim x

x = Shell("c: oolsarj.exe a a:demo c:demo*.*")

End Sub

  但使用SHELL函數 會出現WINDOWS界面和DOS黑色界面的突然切換,顯得不美觀。如何解決這個問題呢?使用WINDOWS的API函數WinExec,可以在隱含的窗體中啟動應用程序,使命令行程序完全在后臺執行。下面給出一例,將ARJ完全WINDOWS化,其效果完全可以亂真。

Sub Command1_Click ( )

Dim cmd As String

Dim hWnd As Integer

cmd = "c:dosARJ.pif " & list1.Text & " -" & LIST2.Text &
" " & text2.Text & " " & text1.Text ’list1、list2輸入參數,text1,text2輸入文件路徑

hWnd = WinExec(cmdline, 0) ’參數為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這樣的軟件是以全屏方式執行的,而WINEXEC函數只能隱藏以窗體方式運行的程序。在編輯PIF文件時顯示方式選擇“窗口”,執行方式選擇“后臺”,這樣就解決了上面提到的界面突換的問題。而調用API函數GetModuleUsage以獲得應用程序結束的標志,若運行完畢則返回TRUE,若未運行完畢則讓出CPU控制權,為運行ARJ提供時機。這樣的小程序完全可以實現命令行軟件的WINDOWS化,而且運行起來真假難辨,有興趣的讀者不妨試一試。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97