2011-06-23 52 views
5

Tôi có một chương trình đang sử dụng nhiều màn hình. Chương trình hiển thị các hình ảnh đặc biệt trên màn hình thứ hai. Tại một thời điểm, chương trình sử dụng các chức năng của Windows shell để gửi các tập tin vào thùng rác. Tuy nhiên, khi thực hiện điều này, hộp thoại xác nhận xóa sẽ xuất hiện trên hình ảnh của tôi. Điều này đặc biệt có vấn đề, như khi chuột ở trên màn hình thứ hai, chương trình của tôi sử dụng các móc chuột để nắm bắt tất cả đầu vào chuột, vì vậy người dùng thậm chí không thể nhấp vào hộp thoại xác nhận.Cho các cửa sổ giám sát để hiển thị các hộp thoại trên

Có thể nào đó cho Windows biết chỉ đặt các hộp thoại trên một màn hình cụ thể không?

Tôi đang sử dụng python, mặc dù nếu tôi phải gọi các hàm C WinAPI mà không phải là một vấn đề

Trả lời

2

mà chức năng bạn đang sử dụng để gửi các tập tin vào thùng rác? nếu bạn sử dụng SHFileOperation, bạn có thể vượt qua HWND gốc. có lẽ làm cho một cửa sổ WS_EX_TOOLWINDOW vô hình trên màn hình khác.

tôi mong đợi API, xử lý cửa sổ đó làm cha mẹ, sẽ căn giữa so với cửa sổ đó, nhưng tôi chưa thử.

tùy thuộc vào phiên bản Windows nào bạn đang nhắm mục tiêu, có khả năng tạo dải bàn để 'gắn' vào các cạnh của màn hình. điều này sẽ tự động được tính vào khu vực được trả lại dưới dạng rcWork bởi GetMonitorInfo và sẽ ngăn các hộp thoại trùng lặp không gian này. Có có thể là một cách khác để tuyên bố rằng một khu vực đang "sử dụng" theo cách tuyên bố không gian ngoài giới hạn, nhưng tôi không biết nó có thể không tồn tại ...

điều xấu xí và thô lỗ bạn có thể làm là bình chọn và tự di chuyển hộp thoại, nhưng nếu đây là bất kỳ loại ứng dụng được triển khai rộng rãi hoặc thương mại nào có khả năng gây hại nhiều hơn lợi ích.

+0

Tôi sẽ dùng thử. SHFileOperation có xóa tệp hoặc chuyển tệp đó vào thùng rác không? Tôi đã sử dụng gói winshell của Tim Golden: http://timgolden.me.uk/python/winshell.html, nhưng tôi có thể thử các hàm API trực tiếp. – jmite

+0

Ngớ ngẩn tôi, hóa ra là có một tùy chọn để không yêu cầu xác nhận trong mô-đun Tim Vàng. Điều này không giải quyết được vấn đề lâu dài, nhưng ngoài việc xóa các tập tin, tôi chưa gặp bất kỳ vấn đề gì. Cảm ơn câu trả lời! – jmite

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