天天看點

VC程式中運作其他程式的三種方法

 有三個函數可以使用: WinExec, ShellExecute,CreateProcess

1.WinExec(String lpCmdLine,Long nCmdShow);

參數說明:

參數 類型及說明
lpCmdLine String,包含要執行的指令行
nCmdShow Long,為視窗指定可視性方面的一個指令。請用下述任何一個常數
SW_HIDE 隐藏視窗,活動狀态給令一個視窗
SW_MINIMIZE 最小化視窗,活動狀态給令一個視窗
SW_RESTORE 用原來的大小和位置顯示一個視窗,同時令其進入活動狀态
SW_SHOW 用目前的大小和位置顯示一個視窗,同時令其進入活動狀态
SW_SHOWMAXIMIZED 最大化視窗,并将其激活
SW_SHOWMINIMIZED 最小化視窗,并将其激活
SW_SHOWMINNOACTIVE 最小化一個視窗,同時不改變活動視窗
SW_SHOWNA 用目前的大小和位置顯示一個視窗,不改變活動視窗
SW_SHOWNOACTIVATE 用最近的大小和位置顯示一個視窗,同時不改變活動視窗
SW_SHOWNORMAL 與SW_RESTORE相同

例: WinExec("c:\\a.txt",SW_SHOW);

2.ShellExecute

hwnd Long,指定一個視窗的句柄,有時候,windows程式有必要在建立自己的主視窗前顯示一個消息框
lpOperation String,指定字串“open”來打開lpFlie文檔,或指定“Print”來列印它
lpFile String,想用關聯程式列印或打開一個程式名或檔案名
lpParameters String,如lpszFlie是可執行檔案,則這個字串包含傳遞給執行程式的參數
lpDirectory String,想使用的完整路徑
nShowCmd Long,定義了如何顯示啟動程式的常數值。參考上表.
lpApplicationName String,要執行的應用程式的名字。可設為vbNullString;在這種情況下,應用程式的名字應在lpCommandLine參數的起始處出現
lpCommandLine

String,要執行的指令行。可用GetCommandLine函數取得一個程序使用的指令行。Windows會盡可能地根據下述搜尋順序來查找執行檔案:

(1)包含了父程序執行檔案的目錄

(2)父程序目前的目錄

(3)由GetSystemDirectory傳回的系統目錄

(4)僅适于windows NT:16位系統目錄

(5)由GetWindowDirectory傳回的Windows目錄

(6)由PATH環境變量指定的目錄

lpProcessAttributes SECURITY_ATTRIBUTES,指定一個SECURITY_ATTRIBUTES結構,或傳遞零值(将參數聲明為ByVal As Long,并傳遞零值)——表示采用不允許繼承的預設描述符。該參數定義了程序的安全特性
lpThreadAttributes SECURITY_ATTRIBUTES,指定一個SECURITY_ATTRIBUTES結構,或傳遞零值(将參數聲明為ByVal As Long,并傳遞零值)——表示采用不允許繼承的預設描述符。該參數定義了程序之主線程的安全特性
bInheritHandles Long,TRUE表示允許目前程序中的所有句柄都由建立的子程序繼承
dwCreationFlags Long,來自API32.TXT檔案的一個或多個下述常數之一,它們都帶有字首CREATE_。下面這些用于VB程式員:
CREATE_SEPARATE_WOW_VDM(僅适用于NT) 啟動一個16位的Windows應用程式時,強迫它在自己的記憶體空間運作
CREATE_SHARED_WOW_VDM(僅适用于NT) 啟動一個16位的Windows應用程式時,強迫它在共享的16位虛拟機(VM)内運作
CREATE_SUSPENDED 立即挂起新程序。除非調用了ResumeThread函數函數,否則它不會恢複運作
也可能是下述常數之一,用于指定優先級
IDLE_PRIORITY_CLASS 新程序應該有非常低的優先級——隻有在系統空閑的時候才能運作。基本值是4
HIGH_PRIORITY_CLASS 新程序有非常高的優先級,它優先于大多數應用程式。基本值是13。注意盡量避免采用這個優先級
NORMAL_PRIORITY_CLASS 标準優先級。如程序位于前台,則基本值是9;如在背景,則優先值是7
不要在VB中使用REALTIME_PRIORITY_CLASS
lpEnvironment Any,指向一個環境塊的指針(環境緩沖區的頭一個字元,或者環境塊的位址)
lpCurrentDriectory String,新程序的目前目錄路徑。調用函數的時候,可用vbNullString指定目前目錄
lpStartupInfo STARTUPINFO,指定一個STARTUPINFO結構,其中包含了建立程序時使用的附加資訊
lpProcessInformation PROCESS_INFORMATION,該結構用于容納新程序的程序和線程辨別符。大多數情況下,一旦這個函數傳回,父應用程式都會關閉兩個句柄。

繼續閱讀