Сенсорные компоненты не работают первые две минуты после входа в систему с пользовательской оболочкой

586
Chris

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

Проблема в том, что если мы запускаем окна с пользовательской оболочкой, то есть без explorer.exeзапуска, сенсорные компоненты в windows ( wisptis.exe), похоже, ничего не делают в течение первых двух минут. По истечении этого времени все работает как надо.

Так что может показаться, что explorer.exe что-то делает, когда запускается, что-то wisptis.exeделает.

wisptis.exeПросмотр монитора процесса показывает, что через две минуты запускает поток и считывает кучу настроек из реестра. Не уверен, как я узнаю, что вызывает это все же.

Я также заметил, что Shell Hardware Detectionслужба, кажется, запускается при входе в систему и останавливается через две минуты, именно тогда, когда начинает работать тач. Так что, возможно, Windows не знает, что компьютер имеет сенсорный экран, пока Shell Hardware Detectionне сделал это. Все еще не объясняет, почему это так быстро при использовании обычной оболочки проводника.

Кто-нибудь знает, что здесь происходит?

Обновление: отключение Shell Hardware Detectionслужбы не имеет значения.

0
Надлежащей процедурой было бы предложить вознаграждение по этому вопросу. Если у вас точно такая же проблема. Ramhound 9 лет назад 0
@Ramhound Ты прав, имеет смысл. Этот вопрос немного грязный и трудный для чтения. Chris 9 лет назад 0
Это дубликат [Сенсорные жесты в IE не работают без запуска explorer.exe один раз] (http://superuser.com/questions/447018/touch-gestures-in-ie-not-working-without-explorer-exe -be-run-Once) с 2012 года, и тот не получил ни одного ответа. harrymc 9 лет назад 0

2 ответа на вопрос

0
Hans Hubert Vogts

We had the same issue and got it solved. Because of copyright I can't send you our code.

But the solution is to fire the event "ShellReady". Check this address for a example how to implement it.

Additionally we had to set this registry value:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] "DelayedDesktopSwitchTimeout"=dword:00000000 
В вашем ответе отсутствует «пример того, как это реализовать». Пожалуйста, добавьте больше, чем просто ссылку. DavidPostill 8 лет назад 0
Интересно. Я уверен, что в конечном итоге попытался запустить это событие. Я не сталкивался с этим значением реестра, но я попробую! Chris 8 лет назад 0
0
user720427

Подобная проблема решена здесь .

Чтобы исправить проблему с моим приложением WPF / C #, я добавил:

using System; using System.Runtime.InteropServices; ... [DllImport("kernel32.dll")] static extern IntPtr CreateEvent(IntPtr lpEventAttributes, bool bManualReset, bool bInitialState, string lpName); [DllImport("kernel32.dll")] static extern bool SetEvent(IntPtr hEevent); ... YourStartupFunction() { ... IntPtr hEvent = default(IntPtr); hEvent = CreateEvent(IntPtr.Zero, true, true, "ShellReadyEvent"); SetEvent(hEvent);  ... } 

Похожие вопросы