Chúng tôi phải chạy một quy trình từ dịch vụ cửa sổ và nhận ảnh chụp màn hình từ đó.Ảnh chụp màn hình quy trình trong Windows Service
Chúng tôi đã thử các cuộc gọi BitBlt và PrintWindow Win32, nhưng cả hai đều cung cấp các bitmap trống (đen).
Nếu chúng tôi chạy mã của chúng tôi từ quy trình người dùng bình thường, nó hoạt động tốt.
Đây có phải là điều gì đó thậm chí có thể không? Hoặc có thể có một phương pháp khác để thử?
Những điều chúng tôi đã cố gắng:
- dịch vụ Windows chạy như Local System, chạy quá trình như Local System -> ảnh chụp màn hình bị lỗi
- dịch vụ Windows chạy as Administrator, chạy quá trình as Administrator -> ảnh chụp màn hình bị lỗi.
- Ứng dụng Windows đang chạy dưới dạng người dùng XYZ, chạy một quy trình dưới dạng XYZ -> ảnh chụp màn hình hoạt động với cả BitBlt hoặc PrintWindow.
- Cố gắng kiểm tra "Cho phép dịch vụ để tương tác với máy tính để bàn" từ Local System
Chúng tôi cũng nhận thấy rằng PrintWindow hoạt động tốt hơn đối với trường hợp của chúng tôi, nó hoạt động nếu cửa sổ là đằng sau một cửa sổ khác.
Đối với các yêu cầu khác, cả quy trình cha và con phải nằm trong cùng một người dùng. Chúng tôi không thể thực sự sử dụng mạo danh từ quy trình này đến quy trình khác.
Bạn đã thử cho phép dịch vụ tương tác với máy tính để bàn chưa? –
Ý tưởng hay, nhưng nó cũng không hoạt động. Tôi cũng nghĩ rằng khi tôi chạy nó như là người dùng Administrator, nó tương đương với việc này. Bạn không thể là người dùng và chọn "cho phép dịch vụ tương tác với máy tính để bàn" từ bảng điều khiển quản lý - nó bị tắt. – jonathanpeppers
Tìm kiếm, xem thêm [Chụp màn hình trên phiên máy tính để bàn máy chủ] (http://stackoverflow.com/questions/5200341/capture-screen-on-server-desktop-session/12851218) – Theraot