Bir kullanıcının tablet modunda olup olmadığını algılamak için aşağıdaki kodu kullanıyorum. Bir Surface Pro'dayım ve klavyeyi çözüp PC'ye bir tablet hazırladığımda, IsTabletMode
doğru döndürür (ki bu da gerekir.) Ekranı ayırmadan "Tablet Mode" düğmesini kullandığımda, IsTabletMode
her zaman false değerini döndürür. Bunu yaşayan var mı ve nasıl çözebilirim?Tablet modu nasıl algılanır
/*
* Credit to Cheese Lover
* Retrieved From: http://stackoverflow.com/questions/31153664/how-can-i-detect-when-window-10-enters-tablet-mode-in-a-windows-forms-applicatio
*/
public static class TabletPCSupport
{
private static readonly int SM_CONVERTIBLESLATEMODE = 0x2003;
private static readonly int SM_TABLETPC = 0x56;
private Boolean isTabletPC = false;
public Boolean SupportsTabletMode { get { return isTabletPC; }}
public Boolean IsTabletMode
{
get
{
return QueryTabletMode();
}
}
static TabletPCSupport()
{
isTabletPC = (GetSystemMetrics(SM_TABLETPC) != 0);
}
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto, EntryPoint = "GetSystemMetrics")]
private static extern int GetSystemMetrics (int nIndex);
private static Boolean QueryTabletMode()
{
int state = GetSystemMetrics(SM_CONVERTIBLESLATEMODE);
return (state == 0) && isTabletPC;
}
}
Does etkinleştirilmiş olması halinde görmek için hiçbir olay yoktur periyodik olarak bu kontrol etmek gerekebilir PC klavyeyi tablet modundayken ve klavye takılıyken algılar mı? (Bunu kontrol edemiyorum.) Eğer öyleyse, bir klavye varlığına dayalı mantık ekleyebilmeniz gerekir. –
PC, tablet modundayken klavyeyi algılar. Bir klavye olup olmadığını algılamaya çalışmıyorum, uygulamamın temasını Windows "tablet" temasıyla eşleştirmeye çalışıyorum. Daha büyük düğmeler vb. Bilirsiniz. Bir klavyenin varlığının bunun üzerinde bir etkisi yoktur. –
Bağladığınız cevap sorusunda yayınlanan "çözüm" ü denediniz mi? – Brunner