先来看看“深入浅出ShellExecute”
Q: 如何打开一个应用程序?
ShellExecute(this->m_hWnd,"open","calc.exe","","", SW_SHOW );或
ShellExecute(this->m_hWnd,"open","notepad.exe", "c://MyLog.log","",SW_SHOW );正如您所看到的,我并没有传递程序的完整路径。
![](https://i-blog.csdnimg.cn/blog_migrate/df67d7475c6999363bcf641a04b49c43.png)
ShellExecute(this->m_hWnd,"open", "c://abc.txt","","",SW_SHOW );
![](https://i-blog.csdnimg.cn/blog_migrate/df67d7475c6999363bcf641a04b49c43.png)
ShellExecute(this->m_hWnd,"open", "http://www.google.com","","", SW_SHOW );
![](https://i-blog.csdnimg.cn/blog_migrate/df67d7475c6999363bcf641a04b49c43.png)
ShellExecute(this->m_hWnd,"open", "mailto:nishinapp@yahoo.com","","", SW_SHOW );
![](https://i-blog.csdnimg.cn/blog_migrate/df67d7475c6999363bcf641a04b49c43.png)
ShellExecute(this->m_hWnd,"print", "c://abc.txt","","", SW_HIDE);
![](https://i-blog.csdnimg.cn/blog_migrate/df67d7475c6999363bcf641a04b49c43.png)
ShellExecute(m_hWnd,"find","d://nish", NULL,NULL,SW_SHOW);
![](https://i-blog.csdnimg.cn/blog_migrate/df67d7475c6999363bcf641a04b49c43.png)
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..."); }
![](https://i-blog.csdnimg.cn/blog_migrate/df67d7475c6999363bcf641a04b49c43.png)
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中,要打开一个文件夹,下面一种方法可以:
- SHELLEXECUTEINFO ShExecInfo;
- memset( &ShExecInfo, 0, sizeof( SHELLEXECUTEINFO ) );
- ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
- ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
- ShExecInfo.hwnd = m_hWnd;
- ShExecInfo.lpVerb = L"Open";
- ShExecInfo.lpFile = L"fexplore.exe";
- ShExecInfo.lpParameters = L"//Program Files//photo//";
- ShExecInfo.lpDirectory = NULL;
- ShExecInfo.nShow = SW_SHOWNORMAL;
- ShExecInfo.hInstApp = NULL;
- ShellExecuteEx(&ShExecInfo);
打开一个文件
- SHELLEXECUTEINFO ShExecInfo;
- memset( &ShExecInfo, 0, sizeof( SHELLEXECUTEINFO ) );
- ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
- ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
- ShExecInfo.hwnd = m_hWnd;
- ShExecInfo.lpVerb = L"Open";
- ShExecInfo.lpFile= L"//ProgramFiles//Empty//Empty.exe";
- ShExecInfo.lpParameters = NULL;
- ShExecInfo.lpDirectory = NULL;
- ShExecInfo.nShow = SW_SHOWNORMAL;
- ShExecInfo.hInstApp = NULL;
- 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.