wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Windows锁屏幕后面会发生什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我一直在从事Windows自动化和监控。 当我锁定Windows机器的屏幕时究竟发生了什么? 我现在正在使用Windows 7,如果我切换到Vista或服务器版本,行为有很大的差异吗? 还有一个可以通过api访问的桌面吗? 我知道我仍然可以发送关键笔划和鼠标点击到特定的窗口(通过ControlSend和ControlClick),但似乎没有“桌面”本身。 有人可以在整个事情上散发光,或者将我指向一
我一直在从事Windows自动化和监控。

当我锁定Windows机器的屏幕时究竟发生了什么?

我现在正在使用Windows 7,如果我切换到Vista或服务器版本,行为有很大的差异吗?
还有一个可以通过api访问的桌面吗?
我知道我仍然可以发送关键笔划和鼠标点击到特定的窗口(通过ControlSendControlClick),但似乎没有“桌面”本身。

有人可以在整个事情上散发光,或者将我指向一个可读的来源,我可以在这主题上得到一个概述。

基本上会发生什么是Windows切换到安全桌面,使其成为当前的安全桌面,所以输入现在与之相关联。

旧桌面仍然存在:桌面上的所有HWND仍然存在,并且连接到该桌面的任何线程仍然可以访问这些HWND,获取其位置等。您仍然可以在此桌面上向Windows发送消息,只要发送消息的线程也在该桌面上。

但是,由于桌面现在不活动,因此无法接收输入。 GetForegroundWindow将返回NULL(IIRC),您不能再使用SendInput,因为输入现在属于不同桌面的[一个线程]该非活动桌面上没有控件可以接收焦点。

请注意,将按键消息发送到没有焦点的控件有时会导致意外的行为,因为应用程序或控件通常不会期望接收键盘输入,而不必先获取焦点。 (对于在WM_SETFOCUS中设置某种输入上下文的控件,例如WM_KILLFOCUS中的控件可能会有问题)。

简而言之,UI仍然存在:您可以对其执行某些查询,但是您不能像通过发送输入一样在常规桌面上自动执行,而与焦点或输入相关的一些其他功能可能会失败。

我不太熟悉AutoHotKey,但功能名称和描述表明它非常依赖于底层的Win32 SendInput API。当桌面不活动时,这对键盘输入根本不起作用。

为了合理地了解桌面如何工作,以及它们如何与winstations,锁定的桌面等相关,请查看Desktop article on MSDN

过去我遇到桌面和自动化的一个问题是:如何使用某种形式的用户输入自动化(鼠标,键盘模拟)进行长时间运行的测试,但仍然锁定我的电脑,以便有人可以不要只是走路并干扰它。一旦您锁定了PC,桌面就不起作用,自动停止工作。屏幕保护程序启动时会出现类似的问题:桌面交换机,自动化失败。

一个解决方案是使用两台电脑:我们称之为Main和Test:从Main,打开一个远程终端服务客户端到Test机器上,然后在测试机器上运行自动测试,但是从主机上的终端服务客户端窗口机。现在很酷的部分:您可以最小化TSC窗口,甚至锁定主机(或让屏幕保护程序启动),并且虚拟会话将继续工作,认为它仍然是活动的 – 只是没有人支付任何注意。这是使用活动桌面创建“连接”会话的一种方法,但是没有人可以干扰的会话,因为它受到主机锁定桌面的保护。

大佬总结

以上是大佬教程为你收集整理的Windows锁屏幕后面会发生什么?全部内容,希望文章能够帮你解决Windows锁屏幕后面会发生什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: