ShellExecute函数的⽤法和实例
今天帮同学做毕业设计时,⽤到了ShellExecute 函数,在这写⼀下。
关于ShellExecute函数:
在ShellAPI单元中,ShellExecute函数的定义为:
HINSTANCE ShellExecute(HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
作⽤:ShellExecute的功能是运⾏⼀个外部程序(或者是打开⼀个已注册的⽂件、打开⼀个⽬录、打印⼀个⽂件等等),并对外部程序有⼀定的控制。
参数说明:
HWND hwnd, //指向⽗窗⼝的句柄;
createprocessaLPCTSTR lpOperation, //指向⼀个null结尾的串以指明要执⾏的操作;
可以是"open","print","explore",NULL;
LPCTSTR lpFile, //指向⽂件名或⽂件夹名串;
LPCTSTR lpParameters, //指向⼀个null结尾的串以指明可执⾏⽂件的参数;
如果FileName参数为⽂档,此参数应为NULL;
LPCTSTR lpDirectory, //指向⼀个null结尾的串以指明默认⽬录;
INT nShowCmd //⽂件在打开时是否显⽰;
如果FileName参数为⽂档,此参数应为0;
其中nShowcmd 详细说⼀下:
1 SW_HIDE 隐藏这个窗体,并激活其他窗体。
2 SW_MAXIMIZE 最⼤化指定的窗体。
3 SW_MINIMIZE 最⼩化指定的窗体,并按顺序激活最上层的窗体。
4 SW_RESTORE 激活并显⽰窗体。如果窗体为最⼩化或者最⼤化,窗体恢复到原始⼤⼩和位置。应⽤程序当恢复⼀个最⼩化的窗体时将指定标记。
5 SW_SHOW 以当前的⼤⼩和位置激活并显⽰窗体。
6 SW_SHOWDEFAULT
7 SW_SHOWMAXIMIZED 激活并最⼤化显⽰窗体。
8 SW_SHOWMINIMIZED 激活并最⼩化现实窗体。
9 SW_SHOWMINNOACTIVE 最⼩化窗体,保持其激活状态。
10 SW_SHOWNA 以当前状态显⽰窗体,保持其激活状态。
11 SW_SHOWNOACTIVATE 以当前的⼤⼩和位置显⽰窗体,并保持其激活状态。
12 SW_SHOWNORMAL 激活并显⽰⼀个窗体。如果窗体为最⼤化或者最⼩化,窗体恢复到原始的⼤⼩和位置。当窗体第⼀次显⽰的时候,应⽤程序记录标记。
⼀些实例:
Q: 如何打开⼀个应⽤程序?
ShellExecute(this->m_hWnd,,,, SW_SHOW );
或
ShellExecute(this->m_hWnd,,
c:\\MyLog.log,,SW_SHOW );
As you can see, I havent passed the full path of the programs.
Q: 如何打开⼀个同系统程序相关连的⽂档?
ShellExecute(this->m_hWnd,open,
c:\\,,,SW_SHOW );
Q: 如何打开⼀个⽹页?
ShellExecute(this->m_hWnd,open,
,,, SW_SHOW );
Q: 如何激活相关程序,发送EMAIL?
ShellExecute(this->m_hWnd,open,
,,, SW_SHOW );
Q: 如何⽤系统打印机打印⽂档?
ShellExecute(this->m_hWnd,print,
c:\\,,, 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:\\; 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\\, 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 );
}
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);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论