Windows 8 在windows 8中以编程方式关闭“开始”屏幕

Windows 8 在windows 8中以编程方式关闭“开始”屏幕,windows-8,automated-tests,Windows 8,Automated Tests,我们有自动化的UI测试,通过定期在虚拟机上运行来验证我们的软件。 我想将一些Windows8版本预览机添加到此池中,这样我们就可以对其运行自动化测试脚本,并确保我们的应用程序继续工作 我们通过从一个干净的快照启动虚拟机来确保测试总是从一个干净的状态开始。机器启动时,在“开始”菜单/启动文件夹中有一个快捷方式,用于启动脚本 问题是,在Windows8上,启动屏幕在机器启动时显示,我们的UI测试无法与应用程序交互,因为启动屏幕会阻止一切。他们试图点击鼠标,结果意外地启动了随机的metro应用程序,所

我们有自动化的UI测试,通过定期在虚拟机上运行来验证我们的软件。 我想将一些Windows8版本预览机添加到此池中,这样我们就可以对其运行自动化测试脚本,并确保我们的应用程序继续工作

我们通过从一个干净的快照启动虚拟机来确保测试总是从一个干净的状态开始。机器启动时,在“开始”菜单/启动文件夹中有一个快捷方式,用于启动脚本

问题是,在Windows8上,启动屏幕在机器启动时显示,我们的UI测试无法与应用程序交互,因为启动屏幕会阻止一切。他们试图点击鼠标,结果意外地启动了随机的metro应用程序,所有的测试都失败了

我以前在Windows8消费者预览版下使用过它。我们的脚本在启动时调用,这将导致启动屏幕隐藏

在版本预览下,这将不再有效

我也试过:

  • 正在创建explorer.exe的快捷方式。它不起作用

  • 创建屏幕保护程序的快捷方式,该屏幕保护程序根据调用explorer/ToggleDesktop。它不工作(看起来它可能只是通过IShellDispatch4.ToggleDesktop进行调用)


听起来您已经在使用VM主机的API从脚本启动和停止虚拟机。您可以使用相同的API将Windows+D组合键发送到VM吗?这将显示桌面。

我们公司也有同样的问题,我们刚刚找到了解决方案。我们使用了AutoIt并制作了一个脚本,可以点击“桌面”互动程序。然后,我们将AutoIt“编译”成一个可执行的exe,并将其与虚拟映像捆绑在各自的启动文件夹中

我们的脚本使用以下命令:

MouseClick("left", x, y)

其中x和y是桌面平铺内的坐标。我们的图像总是恢复到一个干净的状态(就像您的一样),因此此磁贴始终处于相同的位置。

我在RTM版本中最终做的是:


引导程序脚本将运行,并假定开始菜单将接管整个屏幕。然后,我们使用win32 SendInput键入de S K T O P并返回

这是一个解决方案,由来自各地的位编译而成

我们的想法是,我们希望键入“desktop”,然后输入Enter/Return hit(Orion的想法),并在每次登录时都这样做(参考文章中的计划任务想法),但避免使用自定义win32二进制文件。 我的解决方案是使用PowerShell来避免win32二进制文件

将以下PS脚本保存在c:\sendkeys.ps1中:

[void] [System.Reflection.Assembly]::LoadWithPartialName("'System.Windows.Forms")
[System.Windows.Forms.SendKeys]::SendWait("desktop{ENTER}")
然后在每个日志上创建一个计划任务运行,在该日志上使用以下参数启动Powershell:

powershell -executionpolicy bypass -nologo -file c:\sendkeys.ps1
@迈克尔·比斯伯格

嗨!您也可以使用此代码按下并释放Windows键并直接将您发送到桌面:

Send("{LWINDOWN}{LWINUP}")

乔纳森

这个答案是对另一个答案的评论吗?