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
;
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
;
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