一部のユーザーが Win7 タブレットで実行する .net winforms アプリケーションがあります。それらのユーザーのために、特定の UI 要素を変更してペン入力を容易にしたいと考えています。ペンとタッチのデザインガイドラインに関するmsdnドキュメントや、電子インクなどの核心に関するドキュメントを見つけることができましたが、「このマシンはスタイラスまたはタッチをサポートしていますか」を検出するだけでは何もありません。ヒントはありますか?
3 に答える
A. Windows の GetSystemMetricsAPI を使用して、SM_TABLETPC をインデックスの値として渡します。SM_TABLETPC は Winuser.h で定義されています。SM_TABLETPC の値は 86 です。
Web 開発の場合、USER_AGENT_STRING 環境変数を読み取る必要があります。この Request.ServerVariables コレクションにアクセスできます。
Windows Vista または Windows XP Tablet PC Edition を実行している Tablet PC で GetSystemMetrics を使用する方法の詳細については、「PC が Tablet PC であるかどうかの判断」を参照してください。
ソース
msdn の投稿を参照してください。彼らはそのページにルーチンを持っています
using System.Runtime.InteropServices;
[DllImport("user32.dll")]
private static extern int GetSystemMetrics(int nIndex);
// System metric constant for Windows XP Tablet PC Edition
private const int SM_TABLETPC = 86;
private readonly bool tabletEnabled;
protected bool IsRunningOnTablet()
{
return (GetSystemMetrics(SM_TABLETPC) != 0);
}
これが役立つかどうかを確認してください。
受け入れられた回答に加えて、ユーザーがタブレット モードと非タブレット モードを手動で切り替えることもできるようにする必要があります。検出に失敗するか、オペレーティング システムが設計どおりに使用されていない可能性があります。これは、特別なソフトウェアを備えた非タブレット OS を使用する組み込みデバイスでも発生する可能性があります。