ShellExecute的功能是運行一個外部程序,或者打開一個已注冊的文件、打開一個目錄、打印文件等等功能,它可以打開電腦內的任何文件,也可以打開URL。
函數的原型:
HINSTANCE ShellExecute( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd );
hWnd:
用於指定父窗口的句柄。當函數調用過程中出現錯誤時,它將作為Windows消息窗口的父窗口。
lpOperation:
用於指定要進行的操作,當參數為NULL時,默認操作"open"。
"open",表示執行由lpFile參數指定的程序,或者打開由lpFile參數指定的文件或文件夾。
"explort",表示打開由lpFile參數指定的文件夾。
"print",表示打印由lpFile參數指定的文件。
lpParameters:
若lpFile參數是一個可執行文件,則此參數指定命令行參數,否則此參數應設為NULL。
lpDirectory:
用於指定默認目錄。
nShowCmd:
用於指定程序窗口初始顯示方式。
#define SW_HIDE 0 /*隱藏窗體,並激活另一個窗體*/ #define SW_SHOWNORMAL 1 /*與SW_RESTORE相同*/ #define SW_SHOWMINIMIZED 2 /*激活並以最小化的形式顯示窗體*/ #define SW_SHOWMAXIMIZED 3 /*激活並以最大化的形式顯示窗體*/ #define SW_MAXIMIZE 3 /*最大化指定的窗體*/ #define SW_SHOWNOACTIVATE 4 /*以上次的狀態顯示指定的窗體,但不激活它*/ #define SW_SHOW 5 /*激活窗體,並將其顯示在當前的大小和位置上*/ #define SW_MINIMIZE 6 /*最小化指定的窗體,並激活另一個窗體*/ #define SW_SHOWMINNOACTIVE 7 /*以最小化形式顯示指定的窗體,但不激活它*/ #define SW_SHOWNA 8 /*以當前的狀態顯示指定的窗體,但不激活它*/ #define SW_RESTORE 9 /*以原本的大小和位置,激活並顯示指定的窗體*/ #define SW_SHOWDEFAULT 10 /*設置顯示的狀態由STARTUPINFO結構體指定*/
打開計算器:
1 ShellExecute(this->m_hWnd, "open", "calc.exe",NULL, NULL,SW_SHOWMAXIMIZED );
打開一個指定的程序:
1 ShellExecute(this->m_hWnd, "open","D:\\Program Files (x86)\\Notepad++\\notepad++.exe",NULL,NULL,SW_SHOWMAXIMIZED ); 2 ShellExecute(this->m_hWnd, "open", "notepad++.exe",NULL, "D:\\Program Files (x86)\\Notepad++",SW_SHOWMAXIMIZED ); 3 ShellExecute(this->m_hWnd,"open", "notepad++.exe",NULL, "D:\\Program Files (x86)\\Notepad++\\",SW_SHOWMAXIMIZED ); 4 //三個語句其結果都是一樣
打開一個指定的文件:
1 ShellExecute(this->m_hWnd,"open", "F:\\C\\MFC\\MFC.pdf",NULL,NULL,SW_SHOWMAXIMIZED ); 2 ShellExecute(this->m_hWnd,"open", "MFC.pdf",NULL,"F:\\C\\MFC\\",SW_SHOWMAXIMIZED );
打開一個指定的文件夾:
1 ShellExecute(this->m_hWnd, "open", "F:\\C\\MFC",NULL,NULL,SW_SHOWMAXIMIZED ); 2 ShellExecute(this->m_hWnd, "open", NULL,NULL,"F:\\C\\MFC",SW_SHOWMAXIMIZED ); 3 ShellExecute(this->m_hWnd,"explore", NULL,NULL,"F:\\C\\MFC",SW_SHOWMAXIMIZED );
打開URL:
1 ShellExecute(this->m_hWnd, "open", "http://tmxk.org/2012/", NULL, NULL,SW_SHOWMAXIMIZED );
hWnd,可以設為NULL。