VC程序中运行其他程序的三种方法
生活随笔
收集整理的這篇文章主要介紹了
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,定義了如何顯示啟動程序的常數值。參考上表. |
例:ShellExecute(Handle, ''open'', PChar(''c:\test\readme.txt''), nil, nil, SW_SHOW);
3.CreateProcess
?
| 參數 | 類型及說明 | |
| 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,該結構用于容納新進程的進程和線程標識符。大多數情況下,一旦這個函數返回,父應用程序都會關閉兩個句柄。 ? | |
轉載于:https://blog.51cto.com/fenice/566533
總結
以上是生活随笔為你收集整理的VC程序中运行其他程序的三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 淘宝山寨IOS sdk
- 下一篇: 兼容所有浏览器的网页制作方法