Tôi có một ứng dụng sử dụng kết nối ổ cắm để gửi và nhận dữ liệu từ một ứng dụng khác. Trong khi tạo socket, nó sử dụng cổng 4998.Làm thế nào để chạy chỉ một thể hiện của ứng dụng
Đó là vấn đề của tôi. Khi tôi khởi động ứng dụng của mình, socket sẽ bắt đầu sử dụng cổng 4998. Vì vậy, nếu tôi muốn thực thi lại ứng dụng thì tôi gặp lỗi ràng buộc socket.
Vì vậy, tôi muốn giới hạn phiên bản ứng dụng của tôi thành một. Điều đó có nghĩa là nếu ứng dụng đã chạy và một số ứng dụng sẽ chạy lại ứng dụng bằng cách nhấn vào biểu tượng exe hoặc shortcut, nó sẽ không chạy chương trình, thay vào đó nó sẽ đưa ứng dụng hiện có lên trên cùng.
Bằng cách gọi OpenMutex() trước tiên, bạn có một điều kiện chủng tộc. Hãy gọi hàm CreateMutex/Ex() trước tiên. Nó sẽ cho bạn biết nếu mutex đã tồn tại. Gọi OpenMutex() chỉ khi CreateMutex() không thành công với lỗi ERROR_ACCESS_DENIED. –
Bất kỳ mẹo nào về cách thực hiện công việc này trên Win7 +? Global \ x mutexes không nhìn thấy nhau từ phiên đăng nhập người dùng khác nhau ... –
@ RomanPlášil họ thực sự làm, bạn phải làm điều gì đó sai – paulm