[問題] wlanapi.dll
想要import這個dll 來做一些控制
有去看了MSDN 但有些地方還是不太懂
跑出來的結果不太對 ...
希望有人可以解決我多天的疑惑 謝謝 <(_ _)>
http://msdn2.microsoft.com/en-us/library/ms706613.aspx
-----------------------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsApplication27
{
public partial class Form1 : Form
{
public int ierror; //測試看結果對不對
public int ierror2; //同上
public Form1()
{
InitializeComponent();
ierror = 20;
ierror2 = 20;
}
private void Form1_Load(object sender, EventArgs e)
{
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WLAN_CONNECTION_PARAMETERS
{
public WLAN_CONNECTION_MODE wlanConnectionMode;
[MarshalAs(UnmanagedType.LPWStr, SizeConst = 256)]
public string strProfile;
public IntPtr pDot11Ssid;
public IntPtr pDesiredBssidList;
public DOT11_BSS_TYPE dot11BssType;
public uint dwFlags;
}
public enum DOT11_BSS_TYPE//因為WLAN_CONNECTION_PARAMETERS中有欄位需要
{ //用到
dot11_BSS_type_infrastructure,
dot11_BSS_type_independent,
dot11_BSS_type_any
}
public enum WLAN_CONNECTION_MODE //因為WLAN_CONNECTION_PARAMETERS中
{ //有欄位需要用到
wlan_connection_mode_profile,
wlan_connection_mode_temporary_profile,
wlan_connection_mode_discovery_secure,
wlan_connection_mode_discovery_unsecure,
wlan_connection_mode_auto,
wlan_connection_mode_invalid
}
[DllImport("Wlanapi.dll", SetLastError = true, CharSet =
CharSet.Auto)]
private static extern int WlanConnect(
[In] IntPtr hClientHandle,
[In] IntPtr pInterfaceGuid,
[In] IntPtr pConnectionParameters,
out IntPtr pReserved);
[DllImport("wlanapi.dll", EntryPoint = "WlanOpenHandle" ,SetLastError
= true)]
private static extern int WlanOpenHandle(//因為MSDN上說要得到
[In]int dwClientVersion, //hClientHandle要先執行這
[In]IntPtr pReserved, //個function 故
out int pdwNegotiatedVersion,
out IntPtr phClientHandle);
public void MyFunction()
{
int dwClientVersion = 1; //以下四個變數皆是要傳入WlanOpenHandle
IntPtr pReserved =IntPtr.Zero;
int pdwNegotiatedVersion = 0;
IntPtr ClientHandle = IntPtr.Zero;
WLAN_CONNECTION_PARAMETERS pConnectionParameters = new
WLAN_CONNECTION_PARAMETERS();
Guid temp = new Guid();
pConnectionParameters.wlanConnectionMode =
WLAN_CONNECTION_MODE.wlan_connection_mode_profile;
pConnectionParameters.strProfile = null;
pConnectionParameters.pDot11Ssid = IntPtr.Zero;
pConnectionParameters.pDesiredBssidList = IntPtr.Zero;
pConnectionParameters.dot11BssType =
DOT11_BSS_TYPE.dot11_BSS_type_infrastructure;
pConnectionParameters.dwFlags = 0;
IntPtr ptrParam =
Marshal.AllocHGlobal(Marshal.SizeOf(pConnectionParameters));
Marshal.StructureToPtr(pConnectionParameters, ptrParam, true);
IntPtr pInterfaceGuid =
Marshal.AllocHGlobal(Marshal.SizeOf(temp));
Marshal.StructureToPtr(temp, pInterfaceGuid, true);
ierror = WlanOpenHandle(dwClientVersion, pReserved, out
pdwNegotiatedVersion, out ClientHandle);//呼叫function
ierror2 = WlanConnect(ClientHandle, pInterfaceGuid, ptrParam, out
pReserved);//這個function才是我最終目的 但ierror2跑出來的值是錯誤的@@"
Console.WriteLine("");
}
private void button1_Click(object sender, EventArgs e)
{
MyFunction();
MessageBox.Show(ierror.ToString());
MessageBox.Show(ierror2.ToString());
}
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.228.145.146
推
08/06 16:16, , 1F
08/06 16:16, 1F
推
08/06 16:35, , 2F
08/06 16:35, 2F
→
08/06 16:36, , 3F
08/06 16:36, 3F
→
08/06 16:37, , 4F
08/06 16:37, 4F
→
08/06 16:38, , 5F
08/06 16:38, 5F
※ 編輯: eliczone 來自: 220.228.145.146 (08/06 16:44)
※ 編輯: eliczone 來自: 220.228.145.146 (08/06 16:52)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章