wlanapi关于wlanconnect?

如果如是 2012-03-09 09:23:54
本人现在用vs2005编写关于wlanconnect的程序,不知道是不是小弟的设置有问题还是什么原因,一直无法连接。希望各位帮忙。

wlanConnPara.wlanConnectionMode =wlan_connection_mode_profile;
wlanConnPara.strProfile = NULL;

DOT11_SSID Ssidud={0};
string strSsid;
strSsid = CStringA(strsss);
Ssidud.uSSIDLength = (ULONG)strSsid.size();
memcpy(&Ssidud.ucSSID, strSsid.c_str(), strSsid.size());
//此处用来获取SSID字符
wlanConnPara.pDot11Ssid = &Ssidud;

wlanConnPara.dot11BssType = dot11_BSS_type_independent;
wlanConnPara.pDesiredBssidList = NULL;
wlanConnPara.dwFlags = 0;
pIfInfo = (WLAN_INTERFACE_INFO *) &pIfList->InterfaceInfo[i];
dwResult=WlanConnect(hClient,&pIfInfo->InterfaceGuid,&wlanConnPara ,NULL);

不知道这样的代码对吗? 还请各位大神帮忙看下。我连接的都是没有密码的。
还想问下是不是需要用Wlansetprofile进行设置啊?
请问能具体如何进行设置啊?。

在线等~
...全文
1489 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdyichen3 2014-10-02
  • 打赏
  • 举报
回复
引用 12 楼 wdyichen3 的回复:
不知道为何,open system我使用Wlansetprofile之后就会自动连接上了,根本不必用WlanConnect,而且WlanConnect返回的是87的错误,有谁能知道答案吗?
贴上我的代码,大家一起研究下吧 ====================================================== /* win32 console in vs2013, by yichen */ #include "stdafx.h" #include <atlstr.h> #include <windows.h> #include <wlanapi.h> #include <objbase.h> #include <wtypes.h> #include <stdio.h> #include <string.h> #pragma comment(lib, "wlanapi.lib") #pragma comment(lib, "ole32.lib") int main(int argc, char* argv[]) { ULONG ulRet; DWORD dwNegotiatedVersion; HANDLE phClientHandle = NULL; PWLAN_INTERFACE_INFO_LIST pInterfaceList; DOT11_SSID stSsid; WLAN_CONNECTION_PARAMETERS stConnectionParameters; if (3 != argc) { printf("usage: %s <0|1> <ssid>\r\n", argv[0]); return -1; } ulRet = WlanOpenHandle(2, NULL, &dwNegotiatedVersion, &phClientHandle); if (ERROR_SUCCESS != ulRet) { printf("wlan open handle failed.\r\n"); return -1; } ulRet = WlanEnumInterfaces(phClientHandle, NULL, &pInterfaceList); if (ERROR_SUCCESS != ulRet) { printf("wlan get info failed.\r\n"); } if (ERROR_SUCCESS == ulRet) { CString strHead = _T("<?xml version=\"1.0\"?>\ <WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\">\ <name>net-eyes2</name>\ <SSIDConfig>\ <SSID>\ <name>net-eyes2</name>\ </SSID>\ </SSIDConfig>\ <connectionType>ESS</connectionType>\ <connectionMode>auto</connectionMode>\ <MSM>\ <security>\ <authEncryption>\ <authentication>open</authentication>\ <encryption>none</encryption>\ <useOneX>false</useOneX>\ </authEncryption>\ </security>\ </MSM>\ </WLANProfile>"); WCHAR strFile[4096] = { 0 }; //sizeof(strSsid)/sizeof(WCHAR) ULONG blenth, j; blenth = strHead.GetLength(); for (j = 0; j<blenth; j++) { mbtowc(&strFile[j], (const char *)(LPCTSTR)strHead.Left(1), 1); strHead = strHead.Right(strHead.GetLength() - 1); } strFile[blenth] = '\0'; WLAN_REASON_CODE Wlanreason; ulRet = WlanSetProfile(phClientHandle, &(pInterfaceList->InterfaceInfo->InterfaceGuid), 0, strFile, NULL, TRUE, NULL, &Wlanreason); if (ERROR_SUCCESS != ulRet) { printf("wlan set profile failed %lu.\r\n", ulRet); } /* 执行成功就连接上了,其实根本无需下面的connect */ memset(&stSsid, 0, sizeof(stSsid)); memset(&stConnectionParameters, 0, sizeof(stConnectionParameters)); memcpy(stSsid.ucSSID, argv[2], strlen(argv[2]) + 1); stSsid.uSSIDLength = strlen(argv[2]) + 1; stConnectionParameters.pDot11Ssid = &stSsid; stConnectionParameters.wlanConnectionMode = wlan_connection_mode_discovery_unsecure; stConnectionParameters.strProfile = L"net-eyes2"; /* clear 可以填NULL */ stConnectionParameters.dot11BssType = dot11_BSS_type_independent; /* msdn说可以dot11_BSS_type_any,实测不行 */ stConnectionParameters.pDesiredBssidList = NULL; stConnectionParameters.dwFlags = 0; /* WLAN_CONNECTION_ADHOC_JOIN_ONLY */ if (0 == strcmp("0", argv[1])) { ulRet = WlanDisconnect(phClientHandle, &(pInterfaceList->InterfaceInfo->InterfaceGuid), NULL); if (ERROR_SUCCESS != ulRet) { printf("wlan disconnect failed %lu.\r\n", ulRet); } /* 执行成功就断开当前连接的无线网络,不管是不是指定的那个ssid的网络 */ } else if (0 == strcmp("1", argv[1])) { ulRet = WlanConnect(phClientHandle, &(pInterfaceList->InterfaceInfo->InterfaceGuid), &stConnectionParameters, NULL); if (ERROR_SUCCESS != ulRet) { printf("wlan connect failed %lu.\r\n", ulRet); } /* 不知这个connect有什么用,返回成功但是实际连接不成功,而且WlanSetProfile成功就已经连接上了 */ } WlanFreeMemory(pInterfaceList); } ulRet = WlanCloseHandle(phClientHandle, NULL); if (ERROR_SUCCESS != ulRet) { printf("wlan close handle failed.\r\n"); return -1; } return ERROR_SUCCESS; }
wdyichen3 2014-10-02
  • 打赏
  • 举报
回复
不知道为何,open system我使用Wlansetprofile之后就会自动连接上了,根本不必用WlanConnect,而且WlanConnect返回的是87的错误,有谁能知道答案吗?
Chou_Moriarty 2013-12-08
  • 打赏
  • 举报
回复
我想知道我写的时候要在哪输入密码
如果如是 2013-07-05
  • 打赏
  • 举报
回复
引用 9 楼 herokinger 的回复:
[quote=引用 6 楼 ailangzhou89 的回复:] http://download.csdn.net/detail/ailangzhou89/4209821 这是我做好的如果想看的话可以看下不过好像做的不怎么好。 希望有人完善下
编译不过啊.[/quote] 需要SDK支持我用的是Vs2005的。
herokinger 2012-11-29
  • 打赏
  • 举报
回复
引用 6 楼 ailangzhou89 的回复:
http://download.csdn.net/detail/ailangzhou89/4209821 这是我做好的如果想看的话可以看下不过好像做的不怎么好。 希望有人完善下
编译不过啊.
llying123 2012-08-14
  • 打赏
  • 举报
回复
如果已经配置好了,就不需要setprofile了.
没有配置过的话,需要.
CString strProfile;
//strProfile.Format(_T("<?xml version=\"1.0\" ?>")
// _T("<WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\">")
// _T( " <name>%s</name>")
// _T(" <SSIDConfig>")
// _T(" <SSID>")
// _T("<hex>%s</hex>")
// _T(" <name>%s</name>")
// _T(" </SSID>")
// _T(" </SSIDConfig>")
// _T(" <connectionType>ESS</connectionType>")
// _T(" <connectionMode>manual</connectionMode>")
// _T(" <MSM>")
// _T(" <security>")
// _T(" <authEncryption>")
// _T(" <authentication>open</authentication>")
// _T(" <encryption>none</encryption>")
// _T(" <useOneX>false</useOneX>")
// _T(" </authEncryption>")
// _T(" </security>")
// _T(" </MSM>")

// _T("</WLANProfile>"),ssid,hexssid,ssid);


msdn上有不同连接模式下的例子.
无密码的简单啊.
EAP复杂点.
PEAP才是有点难度的.
wyx100 2012-06-27
  • 打赏
  • 举报
回复
#4楼 得分:0回复于:2012-05-08 11:34:59你好,请问问题出在哪里啊?
如果如是 2012-06-27
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/ailangzhou89/4209821
这是我做好的如果想看的话可以看下不过好像做的不怎么好。
希望有人完善下
如果如是 2012-06-27
  • 打赏
  • 举报
回复
需要调用Wlansetprofile这个进行下单
zjg555543 2012-05-08
  • 打赏
  • 举报
回复
你好,请问问题出在哪里啊?
如果如是 2012-04-01
  • 打赏
  • 举报
回复
问题解决了。 不过想问下你知道怎么在vc6.0下使用这个啊?? 我用vc6.0编译的时候会出现好多问题
algdel 2012-04-01
  • 打赏
  • 举报
回复
你是不是ssid没有获取到啊
如果如是 2012-03-09
  • 打赏
  • 举报
回复
咋没人回复啊 自己顶下

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧