Tôi cần ngăn điều khiển .NET WebBrowser hiển thị bất kỳ "Bạn có muốn mở hoặc lưu tệp này không?" và hộp thoại "Lưu dưới dạng". Thay vào đó, tôi muốn hiển thị một hộp thông báo cho người dùng biết rằng các tệp tải xuống bị tắt vì lý do bảo mật.Cách chặn tải xuống trong điều khiển .NET WebBrowser?
Tôi bắt đầu với sự kiện FileDownload
của WebBrowser
, nhưng không cho phép hủy. Sau đó, tôi đã sử dụng cách tiếp cận từ CodeProject: Extended .NET 2.0 WebBrowser Control để triển khai sự kiện của riêng mình dựa trên lệnh gọi COM ban đầu bằng cách sử dụng giao diện DWebBrowserEvents2
. Khi tôi sửa mã theo an MS knowledge base entry about a bug with the FileDownload signature, trình xử lý sự kiện đã được gọi và tôi có thể hủy quá trình tải xuống.
Tuy nhiên, điều này không hoạt động với tất cả các tải xuống: URL tải xuống trỏ đến URL bao gồm .exe
tăng sự kiện và có thể bị hủy trước khi hộp thoại xuất hiện - nhưng đối với những người khác (như .do
), trình xử lý sự kiện không được gọi cho đến khi người dùng nhấp vào Open
, Save
hoặc Cancel
trong hộp thoại.
Một giải pháp khả thi có thể là để intercept WH_CALLWNDPROCRET
messages and 'answer' the dialog before it is shown to the user, nhưng nó có vẻ như nhiều công sức và tôi cũng muốn một giải pháp sạch hơn ...
Có ai biết làm thế nào để ngăn chặn đáng tin cậy tất cả các tải?
Hãy để tôi nhận được eo biển này ... Bạn muốn cho phép truy cập internet cho người dùng của bạn (không có gì hơn là tải tệp xuống máy tính) và bạn muốn chặn TẤT CẢ tải xuống? – Sergio
@Sergio: Tôi nghĩ, Jens muốn chặn tất cả các tệp, không thể hiển thị trực tiếp trong trình duyệt web. – TcKs
TcK là đúng, tôi muốn chặn mọi thứ không thể hiển thị. Điểm không phải là để ngăn chặn tải xuống, nhưng để ngăn chặn bất kỳ hộp thoại "Lưu tệp dưới dạng" hiển thị để người dùng không có cách nào truy cập vào đĩa cứng. Ứng dụng của tôi được cài đặt làm vỏ cửa sổ (không có Trình khám phá, không có trình đơn bắt đầu). –