開啟系統對話方塊,以要求使用者存取感應器資料的權限。
語法
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。
返回值
下表說明同步結果的回覆碼。
| 回傳碼 | Description |
|---|---|
|
使用者啟用了感測器。 |
|
使用者選擇停用感應器。 |
|
使用者取消對話方塊或拒絕提高顯示對話方塊的權限。 |
下表說明非同步結果的傳回碼。
| 回傳碼 | Description |
|---|---|
|
會顯示感測器集合中的所有感測器,供使用者啟用。 方法成功了。 |
|
會顯示感測器集合中的某些感測器,供使用者啟用。 一些傳感器可能已從集合中刪除;例如,因為使用者先前已選擇停用它們。 方法成功了。 |
|
引數無效。 |
|
指標為空值。 |
|
感測器集合中的所有感測器先前都已由使用者停用。 未顯示對話方塊。 |
備註
從 Windows 應用程式的使用者介面 (UI) 執行緒進行同步呼叫可能會封鎖 UI 執行緒,並降低應用程式的回應速度。 若要防止這種情況,請勿從 UI 執行程呼叫這個方法,並將 fModal 設定為 TRUE。
如果以受保護模式執行的應用程式或外掛程式,例如 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);
}
需求
| Requirement | 價值觀 |
|---|---|
| 最低支援的用戶端 | Windows 7 [僅限桌面應用程式] |
| 支援的最低伺服器 | 不支援 |
| 目標平臺 | 窗戶 |
| Header | 傳感器API.h |
| Library | Sensorsapi.lib |
| DLL | Sensorsapi.dll |