Hãy để tôi cung cấp cho bạn thông tin cơ bản.Buộc đóng MessageBox lập trình
Chúng tôi có một Ứng dụng (kích thước trung bình) đang sử dụng MessageBox.Show (....) tại các địa điểm khác nhau (trong hàng trăm).
Các hộp thư này là một phần của worklfow và được sử dụng để thông báo, cảnh báo hoặc lấy dữ liệu nhập từ người dùng. Ứng dụng được cho là tự động đăng xuất sau một thời gian nhất định nếu không có hoạt động nào. Chúng tôi có yêu cầu rằng khi đăng xuất ứng dụng, chỉ để làm sạch dữ liệu phiên, để xóa các chế độ xem và ẩn chính nó để trong lần khởi chạy tiếp theo, nó sẽ không phải thực thi quy trình khởi động tốn kém về mặt thời gian.
Mọi thứ đều hoạt động tốt nhưng trong trường hợp có một số hộp tin nhắn trên màn hình và người dùng rời khỏi máy mà không trả lời hộp tin nhắn và sau đó không có hoạt động nào để đăng ký. Vấn đề là hộp tin nhắn sẽ không biến mất.
Làm cách nào để đóng hộp thư đã mở, nếu có, trong khi ẩn ứng dụng?
Cảm ơn.
lẽ gửi chìa khóa nhập hoặc esc? :) – Reniuz
Tôi nghĩ 'MessageBox.Show (...)' là phương thức, vậy chương trình có thể gửi một khóa như thế nào? Bạn đang sử dụng các chủ đề/nhiệm vụ? – Fischermaen
Cảm ơn bạn đã trả lời. Chỉ cần làm rõ bằng cách sử dụng hộp msg tùy chỉnh không phải là một lựa chọn như rework là khá lớn. Việc gửi khóa ESC cũng không chính xác vì chỉ ứng dụng đang hoạt động mới nhận được lệnh. Tôi đang sử dụng cách tiếp cận FIndWindow nơi tôi nhận được xử lý Msgbox bằng cách đi qua id và chú thích hộp msg. Sau khi nhận được trình xử lý, tôi đang đóng bằng cách sử dụng API win32 sau, ví dụ: SendMessage (mới HandleRef (null, msgbxcHandler), WM_CLOSE, IntPtr.Zero, IntPtr.Zero); SendMessage (mới HandleRef (null, msgbxcHandler), WM_NCDESTROY, IntPtr.Zero, IntPtr.Zero); Cho đến nay nó làm việc tốt. – NYK