對于windows程序設計來說,啟動一個進程有三種方法:WinExec,ShellExecute,CreateProcess。這里僅對CreateProcess的用法加以說明。
對于CreateProcess的詳細參數讀者可以查MSDN和《Windows API參考手冊》,這里不具體說明。下面給出常用的方法:
STARTUPINFO startup;ZeroMemory( &startup, sizeof(startup) );startup.cb = sizeof(startup);ZeroMemory( &m_procInfo, sizeof(m_procInfo) );// 初始化結果體是必須的,否則會異常BOOL bRetVal = ::CreateProcess( (LPCWSTR)strProcPath, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &startup, &m_procInfo );if ( !bRetVal ){ AfxMessageBox( _T( "啟動失敗!" ) );}
說明:
第一個參數是應用程序的全路徑,第二個參數是命令行參數。如果第一個參數為空,就必須在第二個參數中指定應用程序的路徑。
如果啟動的進程與當前進程不再同一個目錄下,則第八個參數必須指定,第八個參數為啟動的進程所在的路徑。否則不能成功啟動進程。如下所示:
BOOL bRetVal = ::CreateProcess( (LPCWSTR)strProcPath, NULL, NULL, NULL, FALSE, 0, NULL, (LPCWSTR)strProcFolder, &startup, &m_procInfo );if ( !bRetVal ){ AfxMessageBox( _T( "啟動失敗!" ) );}
新聞熱點
疑難解答
圖片精選