我在Windows CE中有禁用/启用WIFI的示例代码。
[DllImport("coredll.dll", SetLastError = true)]
private static extern int SetDevicePower(string pvDevice, int dwDeviceFlags, DevicePowerState DeviceState);
private enum DevicePowerState : int
{
Unspecified = -1,
D0 = 0, // Full On: full power, full functionality
D1, // Low Power On: fully functional at low power/performance
D2, // Standby: partially powered with automatic wake
D3, // Sleep: partially powered with device initiated wake
D4, // Off: unpowered
}
private const int POWER_NAME = 0x00000001;
public Form1()
{
InitializeComponent();
}
//Utilities.WiFi.FindDriverKey() is simply a function that returns the whole registry key name
//of the key containing the NDIS MINIPORT class GUID defined in he SDK’s pm.h:
private void button1_Click(object sender, EventArgs e)
{
string driver = Utilities.WiFi.FindDriverKey();
SetDevicePower(driver, POWER_NAME, DevicePowerState.D0);
}
private void button2_Click(object sender, EventArgs e)
{
string driver = Utilities.WiFi.FindDriverKey();
SetDevicePower(driver, POWER_NAME, DevicePowerState.D4);
}
private static string FindDriverKey()
{
string ret = string.Empty;
//#define PMCLASS_NDIS_MINIPORT TEXT("{98C5250D-C29A-4985-AE5F-AFE5367E5006}")
//(From "c:\Program Files (x86)\Windows Mobile 6 SDK\PocketPC\Include\Armv4i\pm.h")
string WiFiDriverClass = "{98C5250D-C29A-4985-AE5F-AFE5367E5006}";
foreach (string tmp in Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Power\\State", false).GetValueNames())
{
if (tmp.Contains(WiFiDriverClass))
{
ret = tmp;
break;
}
}
return ret;
}
然而,我收到此错误:
当前上下文中不存在名称'Utilities'
为什么我收到此错误?
答案 0 :(得分:2)
可能是因为FindDriverKey()
曾经在Utilities
类或命名空间中。只需在调用Utilities.Wifi
之前删除FindDriverKey()
即可。或者,您可以创建一个Utilities命名空间,然后创建一个名为Wifi
的静态类,并将FindDriverKey()
函数放在Wifi
类中。