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

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

Так что может показаться, что explorer.exe что-то делает при запуске, что заставляет wisptis.exe выполнять свою работу.

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

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

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

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

2 ответа2

0

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

Чтобы исправить проблему с моим приложением 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);        
    ...
}
0

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

Но решение состоит в том, чтобы запустить событие "ShellReady". Проверьте этот адрес для примера, как это реализовать.

Кроме того, мы должны были установить это значение реестра:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] 
"DelayedDesktopSwitchTimeout"=dword:00000000 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .