次の方法で共有


タブレット PC プラットフォーム情報のサンプル

このプログラムは、MicrosoftTablet PC および Touch Technology コア コンポーネントの存在と構成を確認します。 タブレット PC コンポーネントがオペレーティング システムで有効になっているかどうかを判断し、コア コントロールの名前とバージョン情報、および既定の手書き認識エンジンと音声認識エンジンを一覧表示します。

アプリケーションは、SM_TABLETPCを渡す GetSystemMetrics Windows API を使用して、アプリケーションがタブレット PC で実行されているかどうかを判断します。 SM_TABLETPCは WinUser.h で定義されています。

特に重要なのは、アプリケーションが Recognizers コレクションを使用して既定の認識エンジンに関する情報を提供する方法です。 Recognizers コレクションと Recognizer オブジェクトの使用を試みる前に、アプリケーションは正常に作成されたかどうかテストします。

コンポーネント

再頒布可能なマージ モジュールを使用して、タブレット PC プラットフォーム API の特定の部分を、Vista および Windows XP Professional のタブレット以外のバージョンにインストールできます。 GetSystemMetrics 呼び出しは、Windows XP Tablet PC Edition がインストールされていることを示すだけです。 アプリケーションは常に、特定のコンポーネントが使用可能かどうかを判断する必要があります。 API のコンポーネントがインストールされているかどうかを判断する適切な方法は、次の例に示すように、オブジェクトまたはコントロールのインスタンスを作成し、使用を試みる前に存在することを確認することです。

IInkRecognizers* pIInkRecognizers = NULL;
HRESULT hr = CoCreateInstance(CLSID_InkRecognizers,
                              NULL, 
                              CLSCTX_INPROC_SERVER, 
                              IID_IInkRecognizers, 
                              (void **)&pIInkRecognizers);
if (SUCCEEDED(hr)) 
{
  // use the component
} else
{
  // component unavailable
}

アプリケーションは、インストールされている音声コンポーネントについて、適切なレジストリ キーを調べることで確認します。

const WCHAR* gc_wszSpeechKey = L"Software\\Microsoft\\Speech\\Recognizers";
//...
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, gc_wszSpeechKey, 0, KEY_READ, 
                  &hkeySpeech) == ERROR_SUCCESS) 

キーは RegQueryValueExW を使用して読み取られます。

最後に、このサンプルでは、インストールされているコントロールを確認します。

LPCOLESTR gc_wszProgId[NUM_CONTROLS] = {L"InkEd.InkEdit", L"msinkaut.InkOverlay"};
// ...
for (int i = 0, j = 0; i < NUM_CONTROLS; i++)
{
    // Get the component info
    CLSID clsid;
    if (SUCCEEDED(CLSIDFromProgID(gc_wszProgId[i], &clsid)) && GetComponentInfo(clsid, info) == TRUE)
    {
        SetDlgItemTextW(hwnd, gc_uiCtrlId[j][0], info.wchName);
        SetDlgItemTextW(hwnd, gc_uiCtrlId[j][1], info.wchVersion);
        j++;
    }
}