2010-05-26 29 views
8

Trong Java chúng ta có thể làm điều đó như sau:Cách chụp ảnh màn hình trong .NET từ một ứng dụng web?

import java.awt.Dimension; 
import java.awt.Rectangle; 
import java.awt.Robot; 
import java.awt.Toolkit; 
import java.awt.image.BufferedImage; 
import javax.imageio.ImageIO; 
import java.io.File; 

... 

public void captureScreen(String fileName) throws Exception { 

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
    Rectangle screenRectangle = new Rectangle(screenSize); 
    Robot robot = new Robot(); 
    BufferedImage image = robot.createScreenCapture(screenRectangle); 
    ImageIO.write(image, "png", new File(fileName)); 

} 

... 

Làm thế nào để chúng tôi làm điều này trong .NET từ một webapplication? Chụp màn hình của khách hàng và gửi nó đến máy chủ tất cả từ bên trong ứng dụng.

+0

Để làm rõ tôi rất thích làm điều này từ Ứng dụng ASP.NET MVC. –

+0

@CodeToGlory Bạn muốn sao chép màn hình của khách hàng? Điều này là không thể trên một ứng dụng web. Bạn sẽ phải có mã chạy trên máy khách. –

+0

Nó không thể làm từ ASP.NET. Cách duy nhất có thể là tạo ra một điều khiển activex, nhưng ngay cả với một giải pháp như vậy, nó sẽ chỉ làm việc với người dùng IE. Suy nghĩ lại những gì nó là bạn cuối cùng đang cố gắng để làm. – Icemanind

Trả lời

6

.NET đối tượng đồ họa có một phương pháp gọi là CopyFromScreen() sẽ chụp một khu vực hình chữ nhật của màn hình và sao chép nó vào một bitmap. Cách tốt nhất để làm điều đó tương tự như sau:

public void CaptureImage(Point SourcePoint, Point DestinationPoint, Rectangle Selection, string FilePath) 
{ 
    using (Bitmap bitmap = new Bitmap(Selection.Width, Selection.Height)) { 
     using (Graphics g = Graphics.FromImage(bitmap)) { 
      g.CopyFromScreen(SourcePoint,DestinationPoint, Selection.Size); 
     } 
     bitmap.Save(FilePath, ImageFormat.Bmp); 
    } 
} 
+0

Đúng, nhưng bây giờ chúng ta biết điều này phải được thực hiện từ một ứng dụng web, mã này không phải là câu trả lời –

+0

Có. Nếu anh ta đang cố gắng để nắm bắt màn hình máy tính để bàn của khách hàng, nó không thể được thực hiện từ ASP.NET. Có lẽ một ActiveX, nhưng nó sẽ chỉ hoạt động trên người dùng IE Windows. – Icemanind

+0

Làm thế nào về Silverlight? Nếu không, bạn có thể thêm 'Không' làm câu trả lời cho câu hỏi này với giải thích tại sao. –

1
+0

Điều đó có vẻ giống như một ứng dụng web ... hay không ... –

+0

Thực ra yêu cầu mã phải cho ứng dụng web chỉ được thêm sau câu trả lời của tôi ... vì vậy cảm ơn bạn đã bỏ phiếu. – Paya

4

Không, không thể thực hiện điều này bằng cách sử dụng html hoặc javascript. Họ chỉ đơn giản là không có phương pháp để làm điều đó. Một lý do có thể là nó sẽ là một nguy cơ bảo mật như John Saunders chỉ ra. Ứng dụng web có thể nắm bắt bất kỳ điều gì xảy ra trên màn hình người dùng mà họ không biết về nó.

Mã phía máy chủ như bạn đã hiển thị không hoạt động, vì nó được chạy ở phía máy chủ. Sliverlight hoặc Biểu mẫu ActiveX có thể hoạt động nhưng không có tùy chọn nào vì bạn muốn nó hoạt động trên tất cả các trình duyệt trên tất cả các nền tảng.

chỉnh sửa

icemanind cho phép chúng tôi được biết đến it is possible using Silverlight, nhưng bạn không thể nắm bắt được toàn bộ màn hình. Có lẽ lý do an ninh.

1

Điều này là không thể với một ứng dụng web cơ bản, cũng không phải với Silverlight.

Tôi cũng rất nghi ngờ rằng lớp Robot trong Java không cho phép bạn chụp ảnh màn hình khi chạy dưới dạng trình duyệt, nếu không đó sẽ là một trong những lỗ hổng bảo mật lớn nhất được tìm thấy trong Java. một applet java có kích thước pixel có thể truyền trực tiếp video trực tiếp của máy tính để bàn của tôi qua internet trở lại máy chủ.

Hãy lùi lại một bước và hỏi điều này: Bạn đang cố gắng làm gì? Tại sao bạn muốn chụp ảnh màn hình?

+0

người dùng phàn nàn về một vấn đề mà cuộc sống của tôi không thể được nhân rộng trong QA hoặc trong bất kỳ môi trường nào. Nó không có nghĩa là nó không phải là xảy ra vì vậy chúng tôi muốn nhìn thấy nó trực tiếp –

+0

@CodeToGlory: Có lẽ tốt nhất là hỏi một câu hỏi mới về cách nắm bắt những gì người dùng đang làm cho mục đích gỡ lỗi. Các chương trình chụp màn hình hoặc các ứng dụng chia sẻ trên máy tính để bàn sẽ đến với bạn. –

Các vấn đề liên quan