2011-01-28 9 views
2

私はOpenNETCFをオープンしてWlanを勝ち抜いてください。そしては成功しません!!Windows CEの Off WLANで - どのように?

私はこれを試してみてください。

[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(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      string driver = FindDriverKey(); 
      SetDevicePower(driver, POWER_NAME, DevicePowerState.D0); 
     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      string driver = FindDriverKey(); 
      SetDevicePower(driver, POWER_NAME, DevicePowerState.D4); 
     } 

     private static string FindDriverKey() 
     { 
      string ret = string.Empty; 
      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; 
     } 
    } 

、まだなし成功!!勝利のCE上でWIFIを開閉する方法

? (windows-mobileなし)

C#コードを使っても結構ですか?任意のヘルプ

+0

ドライバキーのGUIDが正しいですか?レジストリを調べて、これがWLANアダプタを参照しているかどうか確認しましたか? –

+0

私は何を確認するかわからない、何か助けを得ることができますか? – Gali

+0

FindDriverKey()が成功するか、空の文字列を返しますか?失敗した場合は、リモートレジストリエディタでレジストリ内のその場所を確認してください。 OEMは、デフォルト以外の電力クラスを無線LANに割り当てている可能性があります。 – PaulH

答えて

1

ため

おかげかossvcs.dllで、あなたのCEのビルドに含まれていてもいなくてもよいAPIがあります。 GetWirelessDevices()ChangeRadioState()を使用して、無線をオン/オフすることができます。あなたは

のPInvoke例をossvcs.dllのPInvokeする必要があります。このためhere

+0

私は、SDFが失敗している場合(これは、SDFが状態を変更するために使用しているため)、失敗すると思われます。 – ctacke

+0

私はそれが事実かもしれないかと思った。クリスを聞いてください。 OEMに相談してください。とにかくAPI情報を追加する場合は+1 –

+0

+1魅力的な読者は、それが便利だと思うかもしれません。 – ctacke

1

サポートが大幅にWiFiアダプター、ドライバーと自分のOEMが提供するOSイメージに依存します。あなたはこれをすべて正しく実行したと仮定して(SetDevicePower、CHangeRadioStatreなど)、あなたが使ったドライバクラスGUIKLDを検証していないと仮定して、明白なものを試したようです。独自のAPIを介してのみ公開されることもあります。ラジオはプラグインタイプですか、それともハードウェアに組み込まれていますか?これはどのタイプのハードウェアですか?あなたはOEMとチェックしましたか?それをコントロールパネルからオフにすることができますか(APIを持っているか持っていないかを少なくとも示しています)。ラジオが電源のために配線されているか、またはCPLDのようなものから来ている可能性は非常に高いです。デバイスOEMだけが実際に知っているでしょう。

関連する問題