WindowsCE5.0デバイスでCompactFramework3.5を使用して、ActiveSyncの接続を使用してデータを取得する必要があるアプリケーションを構築しています。
モバイルデバイスがクレードルにあり、アクティブな接続があるかどうかをどのように検出できますか?これに対する何らかのPInvokeの呼び出しはありますか?
WindowsCE5.0デバイスでCompactFramework3.5を使用して、ActiveSyncの接続を使用してデータを取得する必要があるアプリケーションを構築しています。
モバイルデバイスがクレードルにあり、アクティブな接続があるかどうかをどのように検出できますか?これに対する何らかのPInvokeの呼び出しはありますか?
接続を検出する側によって異なります。デスクトップ側では、フックできる ActiveSync イベントがいくつかあります。無料のオープン ソースデスクトップ コミュニケーション ライブラリでそれらを取得できます。
デバイスにはいくつかの方法があります。WinMo の場合は簡単です。Microsoft.WindowsMobile.Statusクラスを介してタップすることで、状態と通知のブローカーを使用できます。
一般的な CE デバイスの場合、NOTIFICATION_EVENT_RS232_DETECTED フラグを使用してCeRunAppAtEvent (アプリを実行するだけでなく、イベントを設定できる) を P/Invoke できます。これらの API は、OpenNETCF のスマート デバイス フレームワーク、特にDeviceManagement.SerialDeviceDetected イベントにもラップされています。
これでクレードルを検出することもできます:
get
{
return SystemState.GetValue(SystemProperty.CradlePresent).Equals(1);
}
じゃあこれでいいよ
get
{
return (int)SystemState.GetValue(SystemProperty.ConnectionsDesktopCount) > 0;
}