Sdílet prostřednictvím


Ukázka informací o platformě Tablet PC

Tento program zkontroluje přítomnost a konfiguraci základních komponent počítačů MicrosoftTablet a touch Technology. Určuje, jestli jsou v operačním systému povolené komponenty tabletu PC, výpis názvů a informací o verzích pro základní ovládací prvky a výchozí rozpoznávání rukopisu a rozpoznávání řeči.

Aplikace používá rozhraní GetSystemMetrics Windows API, kterému předává SM_TABLETPC, aby zjistila, zda je aplikace spuštěná na Tablet PC. SM_TABLETPC je definován v winUser.h.

Zvlášť zajímavý je způsob, jakým aplikace využívá kolekci rozpoznávačů k poskytování informací o výchozím rozpoznávači. Než se pokusíte použít kolekci Recognizers a objekt Recognizer, aplikace ověří, zda byly úspěšně vytvořeny.

Součásti

Pomocí znovu distribuovatelného slučovacího modulu mohou být některé části rozhraní TABLET PC Platform API nainstalovány v jiných verzích než Tablet Vista a Windows XP Professional . Volání GetSystemMetrics označuje pouze, že je nainstalován systém Windows XP Tablet PC Edition. Aplikace by měla vždy určit, jestli je daná komponenta k dispozici. Správným způsobem, jak určit, jestli je nainstalována součást rozhraní API, je pokus o vytvoření instance objektu nebo ovládacího prvku a kontrolu, zda existuje před pokusem o jeho použití, jak je znázorněno v následujícím příkladu.

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
}

Aplikace zjistí informace o nainstalovaných komponentách řeči vyhledáním příslušného klíče registru:

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

Klíč se čte pomocí RegQueryValueExW.

Nakonec vzorek zjistí, které ovládací prvky jsou nainstalovány.

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++;
    }
}