我們必須從Windows服務運行一個進程並從中獲取屏幕截圖。Windows服務下的進程屏幕截圖
我們嘗試了BitBlt和PrintWindow Win32調用,但都給出空白(黑色)位圖。
如果我們從普通的用戶進程運行我們的代碼,它就可以正常工作。
這是東西,甚至有可能?或者可以有另一種方法來嘗試?
的事情,我們嘗試:
- Windows服務作爲本地系統運行,運行過程作爲本地系統 - >截圖失敗
- Windows服務以管理員身份運行,運行過程管理 - >截圖失敗。
- 運行爲用戶XYZ的Windows應用程序,運行過程XYZ - >截圖作品既BitBlt函數或PrintWindow。
- 嘗試選中「允許服務與桌面交互」,從本地系統
我們還注意到,PrintWindow適用於我們的情況比較好,它的工作原理如果窗口後面另一個窗口。
對於其他要求,父進程和子進程必須在同一個用戶下。我們不能真正使用從一個進程到另一個進程的模擬。
您是否嘗試允許該服務與桌面進行交互? – 2009-09-18 17:14:19
非常好的主意,但它也不起作用。我也認爲,當我以管理員用戶身份運行它時,這相當於這樣做。你不能讓用戶從管理控制檯檢查「允許服務與桌面交互」 - 它已被禁用。 – jonathanpeppers 2009-09-18 17:18:30
那些搜索,請參閱[在服務器桌面會話上捕獲屏幕](http://stackoverflow.com/questions/5200341/capture-screen-on-server-desktop-session/12851218) – Theraot 2013-12-17 21:39:42