我遇到了与这个帖子。由于这个问题多年来一直没有得到解答,我想看看是否有人已经接近解决这个问题。
问题是,如果我们使用自定义 shell 运行 Windows,即不explorer.exe
运行,Windows 中的触摸组件 ( wisptis.exe
) 在前两分钟似乎不会执行任何操作。在那段时间过去后,一切都正常。
因此看起来 explorer.exe 在启动时正在执行一些操作wisptis.exe
。
查看进程监视器显示两分钟后,wisptis.exe
启动一个线程并从注册表中读取一堆设置。但我不确定如何找出触发此操作的原因。
我还注意到,该Shell Hardware Detection
服务似乎在我登录时启动,并在两分钟后停止,恰好是触摸开始工作时。所以也许 Windows 直到Shell Hardware Detection
完成操作后才知道计算机有触摸屏。仍然无法解释为什么使用普通的资源管理器外壳时速度如此之快。
有人知道这里发生了什么事吗?
更新:禁用该Shell Hardware Detection
服务没有什么区别。
答案1
我们遇到了同样的问题并解决了。由于版权问题,我无法向您发送我们的代码。
但解决方案是触发事件“ShellReady”。查看此地址以获取如何实现的示例。
此外,我们还必须设置此注册表值:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"DelayedDesktopSwitchTimeout"=dword:00000000
答案2
类似问题已解决这里。
为了解决我的 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);
...
}