无线用户界面 API

Windows 8、Windows Server 2012及更高版本包含一项新的连接管理器功能,使用户能够轻松连接到 Internet 以及 (工作和家庭网络的其他网络,例如) 。 这项新的连接管理器功能取代了旧版 Windows 随附的“连接到网络”和“管理无线网络”用户界面,用于管理本机 Wifi 连接。

在 Windows 7、Windows Server 2008 和 Windows Vista 上,有许多用户界面 (UI) 用于连接或配置无线网络。 可以使用 Native Wifi 和 Windows Shell 函数在应用程序中启动这些 UI。 这些 UI 在 Windows 8、Windows Server 2012 及更高版本上不可用。

带 SP3 的 Windows XP 和适用于 SP2 的 Windows XP 无线 LAN API: 无法启动用于以编程方式在应用程序中连接或配置无线网络的任何 UI。

连接到网络

在 Windows 8、Windows Server 2012、Windows 7、Windows Server 2008 和 Windows Vista 上,“连接到网络”向导可用于建立与无线网络的连接。 可以使用 ShellExecute 函数启动 “连接到网络 ”向导。

以下代码演示启动“连接到网络”向导的 ShellExecute 调用。

#ifndef UNICODE
#define UNICODE
#endif

#include <windows.h>
#include <shellapi.h>

// Need to link with shell32.lib
#pragma comment(lib, "shell32.lib")

void wmain()
{
   ShellExecute(
      NULL, 
      L"open", 
      L"shell:::{21EC2020-3AEA-1069-A2DD-08002B30309D}\\::{38a98528-6cbf-4ca9-8dc0-b1e1d10f7b1b}",
      NULL,
      NULL,
      SW_SHOWNORMAL);
}

管理无线网络

在 Windows 7、Windows Server 2008 和 Windows Vista 上,“管理无线网络控制面板项用于管理无线网络配置文件。 ShellExecute 函数还可用于启动“管理无线网络”项。 在 Windows 7 和 Windows Vista 上调用 ShellExecute 时要使用的路径如下:

shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}\3\::{1fa9085f-25a2-489b-85d4-86326eedcd87} .

以下示例代码演示如何使用 ShellExecute 从应用程序启动 托管无线网络 向导。

#ifndef UNICODE
#define UNICODE
#endif

#include <windows.h>
#include <shellapi.h>
#include <stdio.h>

// Need to link with shell32.lib
#pragma comment(lib, "shell32.lib")

int wmain()
{

    //-----------------------------------------
    // Declare and initialize variables
    HINSTANCE nResult;

    PCWSTR lpOperation = L"open";    
    PCWSTR lpFile= 
        L"shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}\\3\\::{1fa9085f-25a2-489b-85d4-86326eedcd87}";

    nResult = ShellExecute(
        NULL,   // Hwnd
        lpOperation, // do not request elevation unless needed
        lpFile,
        NULL, // no parameters 
        NULL, // use current working directory 
        SW_SHOWNORMAL);

    if((int)nResult == SE_ERR_ACCESSDENIED)
    {
        wprintf(L"ShellExecute returned access denied\n");
        wprintf(L"  Executing the ShellExecute command elevated\n"); 

        nResult = ShellExecute(
            NULL,
            L"runas", // Trick for requesting elevation
            lpFile,
            NULL, // no parameters 
            NULL, // use current working directory 
            SW_HIDE);
    }

    if ( (int) nResult < 32) {
        wprintf(L" ShellExecute failed with error %d\n", (int) nResult);
        return 1;
    }    
    else {    
        wprintf(L" ShellExecute succeeded and returned value %d\n", (int) nResult);
        return 0;
    }
}

无线网络配置文件的高级设置

Windows Vista 及更高版本包含一个高级用户界面,用于查看和编辑无线网络配置文件的高级设置。 可以通过调用 WlanUIEditProfile 函数来启动此高级 UI。

使用本机 Wifi

无线配置文件示例

ShellExecute

WlanUIEditProfile