深入浅出ShellExecute 译者:徐景周(原作:Nishant S) Q: 如何打开一个应用程序?
ShellExecute(
this
->
m_hWnd,
"
open
"
,
"
calc.exe
"
,
""
,
""
, SW_SHOW );
或
ShellExecute(
this
->
m_hWnd,
"
open
"
,
"
notepad.exe
"
,
"
c:/MyLog.log
"
,
""
,SW_SHOW );
正如您所看到的,我并没有传递程序的完整路径。 Q: 如何打开一个同系统程序相关连的文档?
ShellExecute(
this
->
m_hWnd,
"
open
"
,
"
c:/abc.txt
"
,
""
,
""
,SW_SHOW );
Q: 如何打开一个网页?
ShellExecute(
this
->
m_hWnd,
"
open
"
,
"
http://www.google.com
"
,
""
,
""
, SW_SHOW );
Q: 如何激活相关程序,发送EMAIL?
ShellExecute(
this
->
m_hWnd,
"
open
"
,
"
mailto:nishinapp@yahoo.com
"
,
""
,
""
, SW_SHOW );
Q: 如何用系统打印机打印文档?
ShellExecute(
this
->
m_hWnd,
"
print
"
,
"
c:/abc.txt
"
,
""
,
""
, SW_HIDE);
Q: 如何用系统查找功能来查找指定文件?
ShellExecute(m_hWnd,
"
find
"
,
"
d:/nish
"
, NULL,NULL,SW_SHOW);
Q: 如何启动一个程序,直到它运行结束?
SHELLEXECUTEINFO ShExecInfo
=
...
{0}
; ShExecInfo.cbSize
=
sizeof
(SHELLEXECUTEINFO); ShExecInfo.fMask
=
SEE_MASK_NOCLOSEPROCESS; ShExecInfo.hwnd
=
NULL; ShExecInfo.lpVerb
=
NULL; ShExecInfo.lpFile
=
"
c:/MyProgram.exe
"
; ShExecInfo.lpParameters
=
""
; ShExecInfo.lpDirectory
=
NULL; ShExecInfo.nShow
=
SW_SHOW; ShExecInfo.hInstApp
=
NULL; ShellExecuteEx(
&
ShExecInfo); WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
或:
PROCESS_INFORMATION ProcessInfo; STARTUPINFO StartupInfo;
//
This is an [in] parameter
ZeroMemory(
&
StartupInfo,
sizeof
(StartupInfo)); StartupInfo.cb
=
sizeof
StartupInfo ;
//
Only compulsory field
if
(CreateProcess(
"
c:/winnt/notepad.exe
"
, NULL, NULL,NULL,FALSE,
0
,NULL, NULL,
&
StartupInfo,
&
ProcessInfo)) { WaitForSingleObject(ProcessInfo.hProcess,INFINITE); CloseHandle(ProcessInfo.hThread); CloseHandle(ProcessInfo.hProcess); }
else
{ MessageBox(
"
The process could not be started...
"
); }
Q: 如何显示文件或文件夹的属性?
SHELLEXECUTEINFO ShExecInfo
=
...
{0}
; ShExecInfo.cbSize
=
sizeof
(SHELLEXECUTEINFO); ShExecInfo.fMask
=
SEE_MASK_INVOKEIDLIST ; ShExecInfo.hwnd
=
NULL; ShExecInfo.lpVerb
=
"
properties
"
; ShExecInfo.lpFile
=
"
c:/
"
;
//
can be a file as well
ShExecInfo.lpParameters
=
""
; ShExecInfo.lpDirectory
=
NULL; ShExecInfo.nShow
=
SW_SHOW; ShExecInfo.hInstApp
=
NULL; ShellExecuteEx(
&
ShExecInfo);
|