Я пишу настольное приложение для Windows 8 и хотел бы, чтобы оно появлялось, когда пользователь касался экрана (например) 4 пальцами. Я нашел этот вопрос:
Как обнаружить касание (касание ввод) глобально вместо щелчка мышью?
ответ предлагает 3 решения. Первый мне не подходит, так как я хотел бы написать приложение, которое работает на каждом планшете Win8.
Второй (RegisterPointerInputTarget) работает отлично (мое приложение перехватывает все возможные сенсорные вводы, даже когда активна стартовая панель или запущено метро-приложение), но в самой Windows начинают отсутствовать некоторые сенсорные возможности (например, я не могу прокручивать стартовую панель пальцем больше). Я попытался ввести сенсорный ввод обратно, но безуспешно:
if (message >= 0x0241 && message <= 0x024F)
{
DWORD pointerID = LOWORD (wParam);
POINTER_TOUCH_INFO pti;
GetPointerTouchInfo (pointerID, &pti);
InjectTouchInput (1, &pti);
}
(и да, я вызывал InitializeTouchInjection (10, 0x3); раньше). Кроме того, мне лично не нравится этот способ, поскольку в документах говорится, что только одно окно может зарегистрироваться для ввода указателя. Поэтому я не хочу, чтобы мое приложение занимало такой ресурс.
Третье решение (хуки) работает хорошо, но я не могу перехватывать касания из приложения метро или стартовой панели.
Кто-нибудь знает, как правильно перехватить весь сенсорный ввод на Windows 8? uiAccess=true не проблема, так как мое приложение будет подписано. Спасибо.