2017-01-17 20 views
2

У меня есть приложение winform (C#), которое я запускаю на планшете Windows, который работает в режиме планшета. Однако, когда я закрываю приложение, экран переходит на рабочий стол, который в режиме планшета - это просто панель задач с пустым экраном. Пока вы не нажмете на экран, что он поднимает меню «Пуск».Вернитесь в меню «Пуск» после закрытия приложения формы выигрыша в режиме Windows 10 планшета

По какой-либо причине это похоже на любые приложения winform, работающие в режиме планшета, но независимо от того, как бы я хотел найти способ просто вызвать начальное меню после закрытия приложения.

Я пытался имитировать щелчок мыши после того, как приложение закрывается с вызовом (кредит https://www.gamedev.net/topic/321029-how-to-simulate-a-mouse-click-in-c/):

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] 
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo); 

private const int MOUSEEVENTF_LEFTDOWN = 0x02;  

private void Form1_FormClosed(object sender, FormClosedEventArgs e) 
{ 
    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0); 
} 

, но это не работает. Я попытался сыграть с настройками панели задач, чтобы убедиться, что это может быть исправлено через Windows без везения.

Кто-нибудь знает, как просто вызвать начальное меню после закрытия приложения winform по коду или настройкам?

ответ

0

Я решил эту проблему с помощью этого поста: SendKeys.Send and Windows Key

Похоже, вместо того, чтобы послать щелчок мыши, посылая ключ вниз, затем с помощью ключа до ключа LWin делает трюк:

[DllImport("user32.dll")] 
    private static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); 

    private const int KEYEVENTF_EXTENDEDKEY = 1; 
    private const int KEYEVENTF_KEYUP = 2; 


    private void Form1_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     keybd_event((byte)Keys.LWin, 0, KEYEVENTF_EXTENDEDKEY, 0); 
     keybd_event((byte)Keys.LWin, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); 
    } 

Конечно, этот код нуждается в дополнительных проверках, чтобы убедиться, что мы фактически находимся в режиме планшета.