次の方法で共有


ISensorManager::RequestPermissions メソッド (sensorsapi.h)

Important

代わりに UWP センサー API を 使用してください。

COM ベースの Sensor API は非推奨であり、新しいアプリケーションでは使用しないでください。 追加の機能や拡張機能は計画されておらず、サポートは制限されます。

センサー データへのアクセス許可をユーザーに要求するシステム ダイアログ ボックスを開きます。

構文

HRESULT RequestPermissions(
  [in] HWND              hParent,
  [in] ISensorCollection *pSensors,
  [in] BOOL              fModal
);

パラメーター

[in] hParent

Windows 8 の場合、 hParent に値が指定されている場合、ダイアログは親ウィンドウにモーダルになります。 hParentNULL の場合、ダイアログはモーダルになりません。 ダイアログは常に同期的です。

Windows 7 の場合、 HWND は、アクセス許可ダイアログ ボックスの親として機能できるウィンドウを処理します。 fModalTRUE の場合は NULL にする必要があります。

[in] pSensors

Windows 8 の場合、この値は使用されません。

Windows 7 の場合、 pSensors は、アクセス許可が要求されているセンサーの一覧を含む ISensorCollection インターフェイスへのポインターです。

[in] fModal

Windows 8 の場合、この値は使用されません。 モダリティの制御については 、hParent を参照してください。

Windows 7 の場合、 fModal はダイアログ ボックス モードを指定する BOOL です。 hParent が null 以外の場合は FALSE にする必要があります。

価値 Meaning
hParentNULL の場合、ダイアログ ボックスはモーダルであるため、ユーザーが応答するまで Windows には排他的フォーカスがあります。 呼び出しは同期です。 戻りコードは、ユーザーの選択を示します。 戻り値を参照してください。

hParent が null 以外の場合、呼び出しは非同期であり、呼び出し元のスレッドはダイアログ ボックスが閉じられるのを待機しません。 戻りコードは、呼び出しが成功したかどうかを示します。 戻り値を参照してください。

ダイアログ ボックスはモードレスです。 呼び出しは非同期であり、呼び出し元のスレッドはダイアログ ボックスが閉じられるのを待機しません。 戻りコードは、呼び出しが成功したかどうかを示します。 戻り値を参照してください。

hParent パラメーターは無視されます。

戻り値

次の表では、同期結果のリターン コードについて説明します。

リターン コード Description
S_OK
ユーザーがセンサーを有効にしました。
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
ユーザーがセンサーを無効にすることを選択しました。
HRESULT_FROM_WIN32(ERROR_CANCELLED)
ユーザーがダイアログ ボックスをキャンセルしたか、ダイアログ ボックスを表示するためのアクセス許可の昇格を拒否しました。
 

次の表では、非同期結果のリターン コードについて説明します。

リターン コード Description
S_OK
ユーザーが有効にするために、センサー コレクション内のすべてのセンサーが表示されました。 メソッドは成功しました。
S_FALSE
ユーザーが有効にするために、センサー コレクション内のセンサーの一部が表示されました。 一部のセンサーはコレクションから削除されている可能性があります。たとえば、ユーザーが以前に無効のままにすることを選択していたためです。 メソッドは成功しました。
E_INVALIDARG
引数が無効です。
E_POINTER
ポインターが null です。
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED)
センサー コレクション内のすべてのセンサーは、以前にユーザーによって無効にされていました。 ダイアログ ボックスが表示されませんでした。

注釈

Windows アプリケーションのユーザー インターフェイス (UI) スレッドから同期呼び出しを行うと、UI スレッドがブロックされ、アプリケーションの応答性が低下する可能性があります。 これを回避するには、 fModalTRUE に設定された UI スレッドからこのメソッドを呼び出さないでください。

メモ  

Internet Explorer が保護モードで実行されているときに Internet Explorer のブラウザー ヘルパー オブジェクト (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);
}


Requirements

Requirement 価値
サポートされる最小クライアント Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー サポートなし
ターゲット プラットフォーム ウィンドウズ
Header sensorsapi.h
Library Sensorsapi.lib
DLL Sensorsapi.dll

こちらも参照ください

ISensorManager

ユーザーのアクセス許可の管理

ユーザー権限の要求