次の方法で共有


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

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

構文

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 にする必要があります。

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

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

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

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

戻り値

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

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

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

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

注釈

Windows アプリケーションのユーザー インターフェイス (UI) スレッドから同期呼び出しを行うと、UI スレッドがブロックされ、アプリケーションの応答性が低下する可能性があります。 これを防ぐために、 fModalTRUE に設定して 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

こちらもご覧ください

ISensorManager

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

ユーザーのアクセス許可の要求