ISensorManager::RequestPermissions メソッド (sensorsapi.h)
システム ダイアログ ボックスを開き、センサー データへのアクセス許可をユーザーに要求します。
構文
HRESULT RequestPermissions(
[in] HWND hParent,
[in] ISensorCollection *pSensors,
[in] BOOL fModal
);
パラメーター
[in] hParent
Windows 8の場合、hParent に値が指定されている場合、ダイアログは親ウィンドウにモーダルになります。 hParent が NULL の場合、ダイアログはモーダルになりません。 ダイアログは常に同期です。
Windows 7 の場合、 HWND は、アクセス許可ダイアログ ボックスの親として機能できるウィンドウを処理します。 fModal が TRUE の場合は NULL にする必要があります。
[in] pSensors
Windows 8の場合、この値は使用されません。
Windows 7 の場合、 pSensors は、アクセス許可が要求されているセンサーの一覧を含む ISensorCollection インターフェイスへのポインターです。
[in] fModal
Windows 8の場合、この値は使用されません。 モダリティの制御については 、hParent を参照してください。
Windows 7 の場合、 fModal はダイアログ ボックス モードを指定する BOOL です。 hParent が null 以外の場合は FALSE にする必要があります。
戻り値
次の表では、同期結果のリターン コードについて説明します。
リターン コード | 説明 |
---|---|
|
ユーザーがセンサーを有効にしました。 |
|
ユーザーがセンサーを無効にすることを選択しました。 |
|
ユーザーがダイアログ ボックスをキャンセルしたか、ダイアログ ボックスを表示するためのアクセス許可の昇格を拒否しました。 |
次の表では、非同期結果のリターン コードについて説明します。
リターン コード | 説明 |
---|---|
|
ユーザーが有効にするために、センサー コレクション内のすべてのセンサーが表示されました。 メソッドが成功しました。 |
|
ユーザーが有効にするために、センサー コレクション内のセンサーの一部が表示されました。 一部のセンサーがコレクションから削除されている可能性があります。たとえば、ユーザーが以前に無効のままにすることを選択していたためです。 メソッドが成功しました。 |
|
引数が有効ではありません。 |
|
ポインターが null です。 |
|
センサー コレクション内のすべてのセンサーは、ユーザーによって以前に無効にされていました。 ダイアログ ボックスが表示されませんでした。 |
注釈
Windows アプリケーションのユーザー インターフェイス (UI) スレッドから同期呼び出しを行うと、UI スレッドがブロックされ、アプリケーションの応答性が低下する可能性があります。 これを防ぐために、 fModal を TRUE に設定して UI スレッドからこのメソッドを呼び出さないでください。
インターネット エクスプローラーが保護モードで実行されているときにインターネット エクスプローラーのブラウザー ヘルパー オブジェクト (BHO) など、保護モードで実行されているアプリケーションまたはプラグインが RequestPermissions を呼び出し、ユーザーがダイアログ ボックスで [この場所センサーを有効にしない] オプションを選択すると、同じユーザーによって RequestPermissions が再度呼び出されると、Windows によってダイアログ ボックスが再び表示されます。 保護モードで実行されるアプリケーションでは、起動時に RequestPermissions を 呼び出さないようにして、アプリケーションの起動時に不要なダイアログ ボックスが表示されないようにすることができます。
例
次のコード例では、非同期メソッド呼び出しを使用して、センサー マネージャーから取得したすべてのセンサーのアクセス許可を種類別に要求します。 プラットフォームでは、まだ有効になっていないセンサーを有効にするようにユーザーに求めるメッセージのみが表示されます。 この場合、ユーザーがセンサーを有効にしたかどうかを判断するには、 ISensorEvents::OnStateChanged イベントを処理する必要があります。 アクセス許可を要求する方法を示すその他の例については、「ユーザーのアクセス 許可の要求」を参照してください。
// Get the sensor collection.
hr = pSensorManager->GetSensorsByType(SAMPLE_SENSOR_TYPE_TIME, &pSensorColl);
if(SUCCEEDED(hr))
{
// Request permissions for all sensors
// in the collection.
hr = pSensorManager->RequestPermissions(0, pSensorColl, FALSE);
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | サポートなし |
対象プラットフォーム | Windows |
ヘッダー | sensorsapi.h |
Library | Sensorsapi.lib |
[DLL] | Sensorsapi.dll |