2013-08-29 29 views
6

Tôi muốn tập trung tập tin .exe (cụ thể hơn là giao diện điều khiển ứng dụng) vào một chương trình hoạt động mà lần đầu tiên khởi chạy nó hoạt động nhưng khi thực hiện lần thứ hai (trong khi lần đầu tiên tồn tại) chương trình khởi chạy đầu tiên. Đó có thể là tất cả trong Qt?Ứng dụng đơn lẻ trong Qt

Trả lời

9

Ví dụ: đọc Run only one instance of a Qt application.

Bỏ qua tính di động, nếu bạn đang chạy trên Windows, một cách tiếp cận phổ biến khác là tạo named pipe (hoặc named mutex) khi ứng dụng khởi động và hủy nó trước khi thoát. Nếu đường ống được đặt tên đã tồn tại, một thể hiện khác đang chạy. Bạn thậm chí có thể viết vào đường ống được đặt tên yêu cầu dụ khác để đưa cửa sổ của nó lên phía trước, một ứng dụng bàn điều khiển có thể không được hưởng lợi từ điều này một cách cụ thể.

Một cách khác để tập trung các trường hợp tồn tại là để tìm ra cửa sổ của instance đang chạy, sau đó gọi SetFocus trên HWND của nó, hoặc chức năng tương ứng trên nền tảng của bạn.

+0

Cảm ơn rất nhiều, nhưng tôi không gặp vấn đề _named_pipe_. – elgolondrino

+0

Bạn gọi ** [CreateNamedPipe] (http://msdn.microsoft.com/en-us/library/aa365150) ** để tạo một đường ống có tên, và nếu nó không thành công (giá trị trả về là 'INVALID_HANDLE_VALUE'), nó có nghĩa là một thể hiện khác đã tạo ra một đường ống có cùng tên, do đó bạn biết một cá thể khác đang chạy. – jweyrich

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