1. 程式人生 > >windows客戶端開發--通過ShellExecute函式開啟瀏覽器

windows客戶端開發--通過ShellExecute函式開啟瀏覽器

在我們的客戶端中常常會有一些link,點選後希望通過瀏覽器導航到該連結。

我們是通過ShellExecute函式來實現的。

ShellExecute的功能是執行一個外部程式(或者是開啟一個已註冊的檔案、開啟一個目錄、列印一個檔案等等),並對外部程式有一定的控制。

注意,要使用這個函式,要引入標頭檔案:

#include <shellapi.h>

看看函式原型:

ShellExecute(
hWnd: HWND; {指定父視窗控制代碼}
Operation: PChar; {指定動作, 譬如: open、runas、print、edit、explore、find[2]  }
FileName: PChar; {指定要開啟的檔案或程式} Parameters: PChar; {給要開啟的程式指定引數; 如果開啟的是檔案這裡應該是 nil} Directory: PChar; {預設目錄} ShowCmd: Integer {開啟選項} )

可以通過ShellExecute開啟windows系統自帶的記事本、計算器等等。

我們這裡需要的是開啟一個連結,如www.baidu.com

更進一步,我們如何指定瀏覽器來開啟www.baidu.com.

我們應該再一次關於一下這個函式的引數:
lpFile [in]
Type: LPCTSTR
A pointer to a null-terminated string that specifies the file or object on which to execute the specified verb. To specify a Shell namespace object, pass the fully qualified parse name. Note that not all verbs are supported on all objects. For example, not all document types support the “print” verb. If a relative path is used for the lpDirectory parameter do not use a relative path for lpFile.

lpParameters [in, optional]
Type: LPCTSTR
If lpFile specifies an executable file, this parameter is a pointer to a null-terminated string that specifies the parameters to be passed to the application. The format of this string is determined by the verb that is to be invoked. If lpFile specifies a document file, lpParameters should be NULL.

lpDirectory [in, optional]
Type: LPCTSTR
A pointer to a null-terminated string that specifies the default (working) directory for the action. If this value is NULL, the current working directory is used. If a relative path is provided at lpFile, do not use a relative path for lpDirectory.

所以,我們可以這樣使用:

#include<iostream>
#include<Windows.h>
#include<shellapi.h>
int main()
{
    //使用IE瀏覽器開啟www.baidu.com
    ShellExecute(NULL, L"open", L"iexplore.exe", L"www.baidu.com", NULL, SW_MAXIMIZE);

    //使用搜狗瀏覽器開啟www.baidu.com
    ShellExecute(NULL, L"open", L"SogouExplorer.exe", L"www.baidu.com", NULL, SW_MAXIMIZE);

   //使用預設瀏覽器開啟www.baidu.com,我用的是chrome
    ShellExecute(NULL, L"Open", L"www.baidu.com", 0, 0, SW_SHOWNORMAL);

    return 0;
}