【问题标题】:Check if windows shell has finished loading startup programs检查 windows shell 是否已完成加载启动程序
【发布时间】:2010-10-16 10:57:29
【问题描述】:

如何以编程方式检查 Windows shell(资源管理器)是否已加载所有启动程序并且用户登录过程是否结束?

【问题讨论】:

    标签: c++ windows winapi


    【解决方案1】:

    有一个记录在案的事件您可以等待,但是当资源管理器开始加载时会发出信号。在 XP 上,此事件在 Vista 上称为“msgina: ShellReadyEvent”和“ShellDesktopSwitchEvent”。我在与此事件相关的post 中链接到了一些替代 shell 的来源。

    另一种选择是收听Taskbar Creation Notification message。它可以触发多次,因此您需要对其进行跟踪。

    在 Vista+ 上,还有一个可能可以正常工作的替代方案:设置为在启动时运行的程序是作业对象的一部分,因此它们不能以高优先级运行。如果您的程序在启动时运行,您可以通过在循环中使用 IsProcessInJob 或 SetPriorityClass+GetPriorityClass 来检查这一点。 (SetPriorityClass 会谎报其返回值 IIRC)

    【讨论】:

      猜你喜欢
      • 2012-01-07
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      • 2021-11-25
      相关资源
      最近更新 更多