簡體   English   中英

來自 windows 服務的屏幕截圖

[英]Screen capture from windows service

我有基於 DirectShow 的屏幕捕獲軟件。 它在內部調用 CopyScreenToBitmap function 來抓取屏幕。 然后圖片經過ffdshow壓縮。 它作為桌面應用程序工作正常,但作為 window 服務,在某些計算機上它不起作用(黑色圖片)。 我已設置“允許服務與桌面交互”並在當前用戶帳戶上運行該服務。 任何想法可能是錯誤的?

我在 windows XP 上對其進行了測試,但預計它也可以在 Vista 和 7 上運行。

是的,它在所有計算機上都作為桌面應用程序工作,但在其中一些(在大多數計算機上)它作為服務失敗了。

據我了解,Vista 中進行了更改,將服務從控制台用戶移至單獨的桌面。 雖然您勾選了“允許訪問”桌面的框,但我認為您仍然必須務實地切換您的服務以使用該桌面。

這是一篇包含一些有用信息和示例的博客文章

除了允許訪問桌面之外,還可以試試這個:

  1. 枚舉所有 Window 站: EnumWindowStations
  2. 為登錄用戶找到 window 站,並將其設為您的進程' window 站: SetProcessWindowStation - 請參閱此線程中的示例
  3. 然后把你當前線程的桌面設置成window站的默認桌面也在這里
  4. 然后使用幾種方法之一獲取桌面的 DC,包括

    CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL)

    祝你好運

您是否測試過桌面應用程序在作為服務失敗的同一台計算機上是否成功?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM