用ShellExecuteEx打开文件,文件夹

本文探讨如何利用ShellExecuteEx函数在Windows环境中打开文件或应用程序,详细解析其工作原理和步骤,帮助理解这一核心操作。
摘要由CSDN通过智能技术生成

先来看看“深入浅出ShellExecute”

 

 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);
在windows mobile中,要打开一个文件夹,下面一种方法可以:
 
 
 
  1.     SHELLEXECUTEINFO ShExecInfo;
  2.     memset( &ShExecInfo, 0, sizeof( SHELLEXECUTEINFO ) );
  3.     ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
  4.     ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
  5.     ShExecInfo.hwnd = m_hWnd;
  6.     ShExecInfo.lpVerb = L"Open";
  7.     ShExecInfo.lpFile = L"fexplore.exe";        
  8.     ShExecInfo.lpParameters = L"//Program Files//photo//";  
  9.     ShExecInfo.lpDirectory = NULL;
  10.     ShExecInfo.nShow = SW_SHOWNORMAL;
  11.     ShExecInfo.hInstApp = NULL; 
  12.     ShellExecuteEx(&ShExecInfo);

 

打开一个文件

 

  1.     SHELLEXECUTEINFO ShExecInfo;
  2.     memset( &ShExecInfo, 0, sizeof( SHELLEXECUTEINFO ) );
  3.     ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
  4.     ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
  5.     ShExecInfo.hwnd = m_hWnd;
  6.     ShExecInfo.lpVerb = L"Open";
  7.     ShExecInfo.lpFile= L"//ProgramFiles//Empty//Empty.exe";      
  8.     ShExecInfo.lpParameters = NULL; 
  9.     ShExecInfo.lpDirectory = NULL;
  10.     ShExecInfo.nShow = SW_SHOWNORMAL;
  11.     ShExecInfo.hInstApp = NULL; 
  12.     ShellExecuteEx(&ShExecInfo);

 

 

关于ShellExecuteEx Function

 

Performs an operation on a specified file.

Syntax

BOOL ShellExecuteEx(      
    LPSHELLEXECUTEINFO lpExecInfo );

Parameters

lpExecInfo
The address of a SHELLEXECUTEINFO structure that contains and receives information about the application being executed.

Return Value

Returns TRUE if successful, or FALSE otherwise. Call GetLastError for error information.
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值