深入浅出ShellExecute

深入浅出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);
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值