我的應用程序是Windows窗體。如何在沒有任何窗口或任務欄的情況下獲得桌面的打印屏幕?
我嘗試使用Windows壁紙,但這取決於「填充」,「拉伸」,「適合」或「平鋪」設置。 我只是需要圖像在桌面上,但包括任務欄「下」的部分,因爲這部分是可見的透明任務欄的情況。
爲什麼我需要這個? 因爲我有一個托盤應用程序,它在打開時從任務欄下滑動。我需要在那裏設置一個蒙版,所以它不能被看到滑動,直到它到達任務欄的頂部。同樣,這只是任務欄透明時的一個問題。
我的應用程序是Windows窗體。如何在沒有任何窗口或任務欄的情況下獲得桌面的打印屏幕?
我嘗試使用Windows壁紙,但這取決於「填充」,「拉伸」,「適合」或「平鋪」設置。 我只是需要圖像在桌面上,但包括任務欄「下」的部分,因爲這部分是可見的透明任務欄的情況。
爲什麼我需要這個? 因爲我有一個托盤應用程序,它在打開時從任務欄下滑動。我需要在那裏設置一個蒙版,所以它不能被看到滑動,直到它到達任務欄的頂部。同樣,這只是任務欄透明時的一個問題。
我不知道我是否正確理解你的問題。但對我來說,你似乎需要創建壁紙的圖像。如果方便的話,看看註冊表項在以下位置:
HKEY_CURRENT_USER\Control Panel\Desktop
這會給你的路徑,大小,瓦/瓦沒有對等的牆紙信息。
有一個Win32函數調用PaintDesktop你可以嘗試,但除非我誤解的東西,你應該能夠僅僅調整窗口的高度,這是從來沒有真正的任務欄後面...
爲什麼我需要這個?因爲我有一個托盤應用程序,它在打開時從任務欄下滑動。我需要在那裏設置一個蒙版,所以它不能被看到滑動,直到它到達任務欄的頂部。同樣,這只是任務欄透明時的一個問題。
這裏的問題是,你開始從下整個屏幕的向上滑動,而不是從屏幕下方的工作區域的開始(即,在任務欄的頂部) 。這就是爲什麼你會看到彈出式窗口在透明任務欄後面滑動。
幸運的是,解決方案比獲取桌面背景和/或做任何類型的遮罩要簡單得多。這也是更快,它總是很好,你的眼睛糖不會不必要地對用戶的計算機徵稅。
您需要做的就是確定屏幕工作區域的座標,該區域由Windows定義爲應用程序可以使用的區域,不包括任務欄和其他邊欄。您可以通過查詢Screen.PrimaryScreen.WorkingArea
property輕鬆地在WinForms中獲取此信息。這將返回對應於主屏幕工作區域的Rectangle
。既然你知道任務欄總是顯示在主屏幕上,這正是你想要的。
一旦你有主屏幕工作區域的座標,從底部開始彈出窗口的幻燈片。 *
這就是爲什麼你應該始終包括爲什麼你想成就一番解釋一個很好的教訓。通常有一種更好的方式,你沒有想到。
* 當然,我忽略了這樣的事實:用戶可能沒有將他們的任務欄放置在屏幕的底部處。你可以把它放在任何一邊或甚至頂部。這聽起來像你在你的問題中沒有考慮過這個問題。如果這是一個僅爲自己編寫的應用程序,或者在可以確保沒有人將其任務欄設置爲非默認位置的受控環境中的應用程序,則可能是正確的。但是,如果您正在編寫軟件以分發給更廣泛的受衆羣體,則需要考慮這一點。無論當前任務欄的位置如何,rcWork
座標都是正確的,但您需要知道是從底部,左側,右側還是頂部開始彈出窗口的滑動。
如果你想得到一個沒有圖標,任務欄等背景的副本,你將不得不代碼化,隱藏它們,拿走屏幕,然後把它們放回他們的方式 – BugFinder 2012-07-23 09:15:37
@BaliC所以不要打擾回答 – 2012-07-23 09:16:16
@BugFinder會不會影響用戶? – 2012-07-23 09:16:43