【发布时间】:2010-10-16 10:57:29
【问题描述】:
如何以编程方式检查 Windows shell(资源管理器)是否已加载所有启动程序并且用户登录过程是否结束?
【问题讨论】:
如何以编程方式检查 Windows shell(资源管理器)是否已加载所有启动程序并且用户登录过程是否结束?
【问题讨论】:
有一个记录在案的事件您可以等待,但是当资源管理器开始加载时会发出信号。在 XP 上,此事件在 Vista 上称为“msgina: ShellReadyEvent”和“ShellDesktopSwitchEvent”。我在与此事件相关的post 中链接到了一些替代 shell 的来源。
另一种选择是收听Taskbar Creation Notification message。它可以触发多次,因此您需要对其进行跟踪。
在 Vista+ 上,还有一个可能可以正常工作的替代方案:设置为在启动时运行的程序是作业对象的一部分,因此它们不能以高优先级运行。如果您的程序在启动时运行,您可以通过在循环中使用 IsProcessInJob 或 SetPriorityClass+GetPriorityClass 来检查这一点。 (SetPriorityClass 会谎报其返回值 IIRC)
【讨论】: