我如何以编程方式检查Windows shell(资源管理器)是否已加载所有启动程序&用户登录过程结束了吗?
答案 0 :(得分:1)
您可以等待有一些记录在案的事件,但是当资源管理器启动加载时会发出信号。在XP上,此事件在Vista上称为“msgina:ShellReadyEvent”和“ShellDesktopSwitchEvent”。我链接到与此事件相关的post中的一些替代shell的来源。
另一种选择是听Taskbar Creation Notification message。它可以不止一次发射,因此您需要跟踪它。
在Vista +上,最后一种选择可能正常工作:设置为在启动时运行的程序是作业对象的一部分,因此它们无法以高优先级运行。如果您的程序在启动时运行,您可以通过在循环中使用IsProcessInJob或SetPriorityClass + GetPriorityClass来检查这一点。 (SetPriorityClass将关于其返回值IIRC)