歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++激活外部文件或程序

C++激活外部文件或程序

日期:2017/3/1 10:08:50   编辑:Linux編程

我使用MFC編寫一個APP,要求About對話框中顯示LOGO、公司名、地址和公司的URL鏈接。使用戶點擊URL鏈接以後,啟動浏覽器訪問Web頁面,這種對話框中的熱鏈接使應用程序增色不少。微軟公司提供的ShellExecute函數正好可以完成這個功能,該功能不僅可以打開特定的文件(.txt;.word....)還可以打開固定網址(www.linuxidc.com等)

ShellExecute函數原型及參數含義如下:

HINSTANCE ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer);

hWnd:用於指定父窗口句柄。當函數調用過程出現錯誤時,它將作為Windows消息窗口的父窗口。例如,可以將其設置為應用程序主窗口句柄,即 Application.Handle,也可以將其設置為桌面窗口句柄(用GetDesktopWindow函數獲得)。
Operation:用於指定要進行的操作。其中“open”操作表示執行由FileName參數指定的程序,或打開由FileName參數指定的文件或文件夾;“print”操作表示打印由FileName參數指定的文件;“explore”操作表示浏覽由FileName參數指定的文件夾。當參數設為nil時,表示執行默認操作“open”。
FileName:用於指定要打開的文件名、要執行的程序文件名或要浏覽的文件夾名及其路徑。
Parameters:若FileName參數是一個可執行程序,則此參數指定命令行參數,否則此參數應為NULL。
Directory:用於指定默認目錄,通常此參數應為NULL。
ShowCmd:若FileName參數是一個可執行程序,則此參數指定程序窗口的初始顯示方式,否則此參數應設置為0。
若ShellExecute函數調用成功,則返回值為被執行程序的實例句柄。若返回值小於32,則表示出現錯誤。

//返回值可能的錯誤有:
                       = 0   {內存不足}
ERROR_FILE_NOT_FOUND   = 2;  {文件名錯誤}
ERROR_PATH_NOT_FOUND   = 3;  {路徑名錯誤}
ERROR_BAD_FORMAT       = 11; {EXE 文件無效}
SE_ERR_SHARE           = 26; {發生共享錯誤}
SE_ERR_ASSOCINCOMPLETE = 27; {文件名不完全或無效}
SE_ERR_DDETIMEOUT      = 28; {超時}
SE_ERR_DDEFAIL         = 29; {DDE 事務失敗}
SE_ERR_DDEBUSY         = 30; {正在處理其他 DDE 事務而不能完成該 DDE 事務}
SE_ERR_NOASSOC         = 31; {沒有相關聯的應用程序}

/ShowCmd 參數可選值:
SW_HIDE            = 0;  {隱藏}
SW_SHOWNORMAL      = 1;  {用最近的大小和位置顯示, 激活}
SW_NORMAL          = 1;  {同 SW_SHOWNORMAL}
SW_SHOWMINIMIZED   = 2;  {最小化, 激活}
SW_SHOWMAXIMIZED   = 3;  {最大化, 激活}
SW_MAXIMIZE        = 3;  {同 SW_SHOWMAXIMIZED}
SW_SHOWNOACTIVATE  = 4;  {用最近的大小和位置顯示, 不激活}
SW_SHOW            = 5;  {同 SW_SHOWNORMAL}
SW_MINIMIZE        = 6;  {最小化, 不激活}
SW_SHOWMINNOACTIVE = 7;  {同 SW_MINIMIZE}
SW_SHOWNA          = 8;  {同 SW_SHOWNOACTIVATE}
SW_RESTORE         = 9;  {同 SW_SHOWNORMAL}
SW_SHOWDEFAULT     = 10; {同 SW_SHOWNORMAL}
SW_MAX             = 10; {同 SW_SHOWNORMAL}

舉例:

在MFC某一對話框的按鈕函數中

打開桌面上的一個新建txt:HINSTANCE i = ShellExecute(this->m_hWnd, _T("open"), _T("D:\\我的文檔\\桌面\\新建 文本文檔.txt"), NULL, NULL, SW_SHOWNORMAL);

打開百度首頁: HINSTANCE i = ShellExecute(0, _T("open"), _T("www.linuxidc.com"), NULL, NULL, SW_SHOWNORMAL);

Copyright © Linux教程網 All Rights Reserved