如何在没有任何窗口或任务栏的情况下获得桌面的打印屏幕?

时间:2012-07-23 09:09:02

标签: windows winforms

我的应用程序是Windows窗体。

我尝试使用Windows壁纸,但这取决于“填充”,“拉伸”,“适合”或“平铺”设置。 我只需要桌面上的图像,但包括任务栏“下”的部分,因为在透明任务栏的情况下这个部分是可见的。

为什么我需要这个? 因为我有一个托盘应用程序,在打开时从任务栏下滑动。我需要在那里设置一个面具,所以在它到达任务栏顶部之前不能看到滑动。同样,当任务栏透明时,这只是一个问题。

3 个答案:

答案 0 :(得分:0)

我不确定我是否正确理解了你的问题。但对我来说,似乎你需要创建壁纸的图像。如果看起来更容易,请查看以下位置的注册表项:

HKEY_CURRENT_USER\Control Panel\Desktop

这将为您提供壁纸的路径,大小,平铺/无平铺等信息。

答案 1 :(得分:0)

你可以尝试一个名为PaintDesktop的Win32函数,但除非我误解了你应该能够调整窗口的高度,所以它永远不会真正落在任务栏后面......

答案 2 :(得分:0)

  

为什么我需要这个?因为我有一个托盘应用程序,在打开时从任务栏下滑动。我需要在那里设置一个面具,所以在它到达任务栏顶部之前不能看到滑动。同样,当任务栏透明时,这只是一个问题。

这里的问题是你从整个屏幕的底部开始向上滑动,而不是从屏幕工作区的底部开始(即,任务栏的顶部)。这就是为什么你看到弹出窗口在透明任务栏后面滑动的原因。

幸运的是,该解决方案比获取桌面背景和/或进行任何类型的屏蔽要简单得多。它也是更快,并且你的眼睛糖果不会对用户的计算机造成不必要的负担,这总是好的。

您需要做的就是确定屏幕工作区域的坐标,该区域由Windows定义为应用程序可以使用的区域,不包括任务栏和其他侧栏。您可以通过查询Screen.PrimaryScreen.WorkingArea property在WinForms中轻松获取此信息。这将返回与主屏幕工作区域对应的Rectangle。由于您知道任务栏始终显示在主屏幕上,因此这正是您想要的。

获得主屏幕工作区域的坐标后,从底部开始弹出窗口的幻灯片。 *

这是一个很好的教训,为什么你总是包含你想要完成某些事情的原因的解释。通常有一种更好的方式,你没有想到。

* 当然,我忽略了用户可能没有将任务栏放在屏幕的底部的事实。你可以将它放在任何一侧甚至顶部。听起来像你在你的问题中没有考虑到这一点。如果这是一个您只为自己编写的应用程序,或者您可以确定没有人将其任务栏置于非默认位置的受控环境,那么这可能没问题。但是,如果您正在编写软件以分发给更广泛的受众,则需要考虑这一点。当然,无论任务栏的位置如何,rcWork坐标都是正确的,但您需要知道是从底部,左侧,右侧还是弹出弹出窗口的滑块,或者顶部。

相关问题