2011-11-04 37 views
10

Đây là tình huống. Công ty tôi làm việc để xây dựng phần mềm này trong c có thể làm cho một máy tính Windows hoạt động giống như một TV. Về cơ bản, phần mềm của chúng tôi có nghĩa là được phát toàn màn hình và nội dung được hiển thị từ internet mà không cần người dùng phải chạm vào máy tính nữa.Tránh tất cả tin nhắn và tin nhắn hệ thống từ các phần mềm khác

Vấn đề là thỉnh thoảng, hệ thống sẽ trả về cửa sổ bật lên như "Hệ thống Windows của bạn đã sẵn sàng để nâng cấp". hoặc "Vui lòng gia hạn đăng ký Norton của bạn" vv mà người dùng phải xóa theo cách thủ công và định kỳ.

Có cách nào để hiển thị nội dung toàn màn hình mà không bị làm phiền bởi những cảnh báo đó không?

+4

Hmya, những thông báo này rất quan trọng. Để xem xét ứng dụng của bạn là quan trọng nhất là một trận chiến khó thắng. Nó cũng khá đáng ngờ để ngăn chặn "Bo mạch chủ đang cháy" notificaiton. Bạn sẽ phải thuyết phục Windows rằng người dùng đang tích cực sử dụng cửa sổ. Rất khó với một ứng dụng TV. Bạn có thể tạo ra một số đầu vào giả với hàm SendInput(). –

+5

Lol, tôi không biết có thông báo "Bo mạch chủ đang cháy" – Randomblue

+5

Bạn có thể kiểm tra nó bằng đèn pin thổi. –

Trả lời

13

Yah, cho dù cộng đồng phát triển có đồng ý hay không, Microsoft có một số tiêu chuẩn về thời điểm và lý do tại sao có thể chấp nhận việc sử dụng độc quyền màn hình.

Chiến lược chính thức nhất là sử dụng DirectX ở chế độ độc quyền. Đây là những gì trò chơi làm, những gì windows media player làm trong video toàn màn hình với tăng tốc phần cứng được kích hoạt, ... Nếu ứng dụng của bạn đa phương tiện (như được đề xuất bởi TV như chức năng), có thể bạn đang sử dụng DirectX . Bên cạnh việc cho phép bạn truy cập hiển thị độc quyền, nó cũng sẽ tăng hiệu suất ứng dụng của bạn trong khi giảm tải CPU (vì nó sẽ làm quá tải đồ họa làm việc với card màn hình khi có thể).

Nếu DirectX không phải là một tùy chọn, có rất nhiều hack có sẵn mà dường như tất cả đều hoạt động khác nhau giữa các thế hệ hệ điều hành windows khác nhau. Vì vậy, bạn có thể phải được chuẩn bị để thực hiện một số kỹ thuật để trang trải cho mỗi hệ điều hành bạn dự định hỗ trợ.

Một kỹ thuật là đặt ứng dụng của bạn làm trình bảo vệ màn hình hiện đang chạy. Một trình bảo vệ màn hình nếu thực sự chỉ là một EXE được đổi tên thành SCR với một số lệnh dòng lệnh nhất định, nó sẽ hỗ trợ. Nhưng bạn có thể viết ứng dụng của riêng mình làm trình bảo vệ màn hình và một trình khởi chạy nhỏ để đặt nó làm trình bảo vệ màn hình và khởi chạy nó. Khi thoát ứng dụng sẽ trả về các thiết lập bảo vệ màn hình ban đầu (có lẽ trình khởi chạy chờ quá trình thoát ra để nó trả về các thiết lập trong cả hai lối thoát duyên dáng và bất kỳ kết thúc quá trình không có kế hoạch, ví dụ: lỗi ứng dụng). Tôi không chắc chắn nếu hành vi này là nhất quán trên nền tảng mặc dù, bạn sẽ phải kiểm tra nó.

Ngăn các ứng dụng khác tạo cửa sổ xử lý thực sự là một hack trong quan điểm của tôi và khá xấu mà tôi sẽ không đánh giá cao như một khách hàng của phần mềm như vậy.

Gọi liên tục BringWindowToTop() để giữ bạn ở phía trước tốt hơn (nó không phá vỡ phần mềm khác) nhưng vẫn còn một chút hack-ish.

7

Ghi thông báo tạo cửa sổ bằng móc toàn cục. Bằng cách này bạn có thể đóng hoặc ẩn các cửa sổ không mong muốn trước khi chúng hiển thị.

EDIT: Nếu bạn chắc chắn muốn tránh móc, thì bạn có thể gọi hàm theo định kỳ, đặt cửa sổ của bạn lên đầu ngăn xếp z.

+1

Tôi cảm thấy rằng loại móc như vậy là một chút overkill ...: S –

+1

Tôi đã có cùng một vấn đề một vài năm trước đây, và không thể tìm thấy bất kỳ phương pháp đơn giản. Nó đặc biệt là xấu xí mà bạn phải sử dụng một DLL cho mã của móc toàn cầu. – kol

4

Bạn có thể tắt cập nhật hệ thống http://support.microsoft.com/kb/901037 và xóa phần mềm độc hại norton.

Bạn cũng có thể kết nối màn hình thứ hai để các bong bóng xuất hiện trong màn hình đầu tiên.

Hoặc bạn viết lại nó cho linux hoặc windows ce.

Một lựa chọn cuối cùng là cài đặt phần mềm mà cấu hình lại os của bạn thành một kiosk http://shop.inteset.com/Products/9-securelockdown.aspx

3

Nếu bạn không cần bàn phím hoặc chuột đầu vào, làm thế nào về việc chạy ứng dụng của bạn như một screensaver?

3

Rất nhiều thư bị trục trặc/quản lý bởi Windows Explorer. Chỉ cần thay thế bằng dummy C#/winform của bạn. Bằng cách thay đổi giá trị registry

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] 
"Shell"="Explorer.exe" 

Bạn có thể chỉ định hầu như bất kỳ exe như một thay thế cho explorer.exe Đó là cách tất cả các cửa sổ dựa trên hệ thống (nhúng) (ATM & co) làm. Vẫn còn vài điều chỉnh (vô hiệu hóa các dịch vụ bạn không cần/dr watson & những người khác), và tất nhiên, bạn sẽ muốn giữ một "cửa sổ khởi động lại explorer.exe". Nhưng đó là một khởi đầu tốt

+0

Đi theo cách này, bạn sẽ nhận được sự hỗ trợ cụ thể và hiệu quả từ Microsoft trực tiếp (nếu bạn cần), và chủ yếu là, không liên quan đến bất kỳ hacks bẩn nào. – 131

+0

Các cửa sổ cập nhật tin nhắn có thể được kích hoạt bởi nhà thám hiểm, nhưng chắc chắn không phải là bên thứ ba "bánh mì nướng". Ngoài Norton đã đề cập, có thể có MS Outlook, google talk, msn messanger, v.v ... Là một nhà phát triển C#, tôi thậm chí còn tạo các tin nhắn bánh mì nướng của riêng mình trong một số ứng dụng không phụ thuộc vào thám hiểm. Tôi cho rằng giả định của tôi ở trên là đây là một ứng dụng tiêu dùng chứ không phải là một thiết bị nhúng hoặc họ cũng có thể cấp phép cho một hệ điều hành nhúng từ Microsoft như XP nhúng. Đây là một phiên bản rút gọn của các cửa sổ dự định chính xác cho đề xuất của bạn như một thiết bị chuyên dụng. – BenSwayne

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