2012-07-23 46 views
0

我的应用程序是Windows窗体。如何在没有任何窗口或任务栏的情况下获得桌面的打印屏幕?

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

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

+0

如果你想得到一个没有图标,任务栏等背景的副本,你将不得不代码化,隐藏它们,拿走屏幕,然后把它们放回他们的方式 – BugFinder 2012-07-23 09:15:37

+0

@BaliC所以不要打扰回答 – 2012-07-23 09:16:16

+0

@BugFinder会不会影响用户? – 2012-07-23 09:16:43

回答

0

我不知道我是否正确理解你的问题。但对我来说,你似乎需要创建壁纸的图像。如果方便的话,看看注册表项在以下位置:

HKEY_CURRENT_USER\Control Panel\Desktop 

这会给你的路径,大小,瓦/瓦没有对等的墙纸信息。

0

有一个Win32函数调用PaintDesktop你可以尝试,但除非我误解的东西,你应该能够仅仅调整窗口的高度,这是从来没有真正的任务栏后面...

0

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

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

幸运的是,解决方案比获取桌面背景和/或做任何类型的遮罩要简单得多。这也是更快,它总是很好,你的眼睛糖不会不必要地对用户的计算机征税。

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

一旦你有主屏幕工作区域的坐标,从底部开始弹出窗口的幻灯片。 *

这就是为什么你应该始终包括为什么你想成就一番解释一个很好的教训。通常有一种更好的方式,你没有想到。

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

相关问题