int main ( void ) { SHELLEXECUTEINFO ShExecInfo = { 0 } ; ShExecInfo . cbSize = sizeof ( SHELLEXECUTEINFO ) ; ShExecInfo . fMask = SEE_MASK_NOCLOSEPROCESS ; ShExecInfo . hwnd = NULL ; ShExecInfo . lpVerb = NULL ; ShExecInfo . lpFile = L ".\\a.exe" ; // 预执行程序 ShExecInfo . lpParameters = STDString2LPCWCH ( command ) ; // 参数 ShExecInfo . lpDirectory = NULL ; ShExecInfo . nShow = SW_SHOWMINIMIZED ; // 隐藏执行 ShExecInfo . hInstApp = NULL ; ShellExecuteEx ( & ShExecInfo ) ; // 等待 WaitForSingleObject ( ShExecInfo . hProcess , INFINITE ) ; return 0 ; // std::string 转 LPCWCH LPWSTR STDString2LPCWCH ( const std :: string strcs ) UINT len = MultiByteToWideChar ( CP_ACP , 0 , strcs . c_str ( ) , - 1 , NULL , 0 ) ; LPWSTR wszasc = new WCHAR [ len + 1 ] ; MultiByteToWideChar ( CP_ACP , 0 , strcs . c_str ( ) , - 1 , wszasc , len ) ; return wszasc ;

nShow 参数

SW_HIDE 隐藏窗口并激活另一个窗口。
SW_SHOWNORMAL | SW_NORMAL 激活并显示一个窗口。如果窗口最小化或最大化,系统会将其恢复到其原始大小和位置。应用程序应在首次显示窗口时指定此标志。
SW_SHOWMINIMIZED 激活窗口并将其显示为最小化的窗口。
SW_SHOWMAXIMIZED | SW_MAXIMIZE 激活窗口并将其显示为最大化窗口。
SW_SHOWNOACTIVATE 以窗口的最新大小和位置显示窗口。此值类似于SW_SHOWNORMAL,只是窗口未激活。
SW_SHOW 激活窗口并以当前大小和位置显示窗口。
SW_MINIMIZE 最小化指定的窗口并按 Z 顺序激活下一个顶级窗口。
SW_SHOWMINNOACTIVE 将窗口显示为最小化的窗口。此值类似于SW_SHOWMINIMIZED,只是窗口未激活。
SW_SHOWNA 以窗口的当前大小和位置显示窗口。此值类似于SW_SHOW,只是窗口未激活。
SW_RESTORE 激活并显示窗口。如果窗口最小化或最大化,系统会将其恢复到其原始大小和位置。应用程序应在还原最小化的窗口时指定此标志。
SW_SHOWDEFAULT 根据启动应用程序的程序传递给 CreateProcess 函数的 STARTUPINFO 结构中指定的SW_值设置显示状态。
SW_FORCEMINIMIZE 最小化窗口,即使拥有该窗口的线程没有响应。仅当最小化来自不同线程的窗口时,才应使用此标志。

以商业的软件Enblend为例,进行图像无缝拼接和匀光匀色,可以如下直接在Dos中 使用 命令行 调用 : C:\...\Test> enblend -o blend.tif 0.t... bool shell Ex cute(const QString& path, const QString& paramater, bool admin_flag, bool wait_flag) std::wstring file_path = std::wstring((const wchar_t*)file_path.utf16());//绝对路径 std::wstring paramater_line = std::wstring((const wchar_t*)paramate Q: 如何打开一个应用 程序 Shell Execute (this->m_hWnd,"open","calc. exe ","","", SW_SHOW );或 Shell Execute (this->m_hWnd,"open","notepad. exe ","c://MyLog.log","",SW_SHOW );正如您所看到的,我并没有传递 程序 的完整路径。Q: 如何打开一个同系统 程序 相关连的文档?She #pragma comment (lib, "Urlmon.lib") int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPTSTR lpCmdLine, _. 如何判断通过 Shell Execute 执行的应用 程序 已经执行完毕? 今日工作中遇到一问题,当我执行完 Shell Execute Ex 函数后,发现他不 等待 Shell Execute Ex 调出的执行 程序执行 完毕,就继续其他代码行。为此特地学习了一下,总结方法有二: ...... // 代码行 SHELL EXECUTE INFO sei; memset(&sei, 0, sizeof(SH The following routine will allow you to call another program from LotusScript, wait for that program to finish and continue running your script. The Yield ex ample in Designer help uses an obsolete API 调用 exe 有诸如 Shell Execute ( Ex ) , System 之类的函数,本文以 Shell Execute Ex 为例子, 调用 exe ,并 等待 其结束。         char ActiveCmd[200] ={0};        sprintf(ActiveCmd, "%s %s", argv[1]  , argv[2] );        printf( "%s\n", ActiveCm... 先取到所要启动 exe 的绝对路径,比如: C:\Test\update. exe 也要得到 exe 所存在的目录路径,比如: C:\Test1.先用Qt实现QString path = "C:\\Test\\update. exe "; QString runPath = "C:\\Test";QProcess *process = new QProcess; process->setWorkingDirec 还可以用 Shell Execute Shell Execute Ex ,函数原型: SHSTDAPI_(HINSTANCE) Shell Execute A (HWND hwn