Windows 7 Sensor APIのCOM Wrapper


このポスト、書いて公開するのをすっかり忘れていることに、今気がつきました。既にNESLが出てしまったので、このままお蔵入りさせようかとも思ったのですが、考えてみたらガジェットでセンサーAPI使う時、これの類がないと駄目じゃん。ってことで、3ヶ月遅れぐらいで公開です。以下、当時のままポストします。

お疲れ様です。

結構前からTwitterでつぶやいたり、PDC TokyoやTech Fieldersセミナーのネタでちら見せしてきましたが、COM Wrapper作ってCodePlexに登録してあります。これ使うと、Windows 7 Sensor & Location Platformのセンサーのほうの機能が、SilverlightのOOBで使えたり、デスクトップガジェットで利用できたりするんですね。

http://sensor7dotnet.codeplex.com

まぁ、久々のNative系プログラミングだったので、結構しんどかったですが、もしよければ開発に参加してくださいまっせ。

で、使い方ですが、ビルドして出来上がったやつ、SensorCOMW.exe、を引数 /RegServer 付けてコマンドラインでまずは実行してください。これで、このWrapperがレジストリに登録されますんで。
そして、Silverlightのアプリケーション作って、以下のような感じで使う訳っす。

using System.Runtime.InteropServices.Automation;
...
    if (Application.Current.IsRunningOutOfBrowser){ // OOBで実行していることを確認
        // センサーCOM Wrapperを取り出す。取り出したオブジェクトはSensorManagerに相当
        dynamic sensorcom = AutomationFactory.CreateObject("Sensr7COMW.DispSensorManager");
        dynamic sensors = sensorcom.GetAllSensors(); // すべてのセンサーを取得
        dynamic aSensor = sensors.GetAt(0); // センサーの取出し
        // TypeIdを指定して特定の種別のセンサーを取り出す。
        dynamic lightSensor = sensorcom.GetSensorsByTypeId("{97F115C8-599A-..."});

 後は、コードを見てお試しください。

…てな感じで。ガジェットで使う方法は、また別途ポストしますね。

Comments (0)

Skip to main content