Qt

2013-08-29 20 views
6
için tek örnek uygulama

.exe dosyasını (daha özel olarak konsol uygulaması), çalıştığı ilk kez çalıştırılan, ancak ikinci kez yürütüldüğünde (ilk var olduğunda) odaklanabileceği bir işlevli programa odaklamak istiyorum. İlk başlatılan program. Qt'de bu mümkün mü?Qt

cevap

9

Tek bir örnek için, Run only one instance of a Qt application öğelerini okuyun.

Taşınabilirlik göz ardı edilirse, Windows'ta çalışıyorsanız, başka bir genel yaklaşım, uygulama başladığında named pipe (veya named mutex) oluşturmak ve çıkmadan önce onu yok etmektir. Adlandırılmış boru zaten varsa, başka bir örnek zaten çalışıyor. Hatta bir konsol uygulamasının bu özellikten yararlanamamasına rağmen, diğer örneği penceresinin önüne getirmesini isteyen adlandırılmış boruyu bile yazabilirsiniz.

varolan örneği odaklanmak için başka bir yol, daha sonra HWND veya platformda uygun bir fonksiyonu onun üzerinde SetFocus çağrı zaten çalışıyor örneğinin pencere bulmaktır.

+0

Çok teşekkürler, ama _named_pipe_ sorunuyla karşılaşmadım. – elgolondrino

+0

Yönlendirilmiş bir boru oluşturmak için ** [CreateNamedPipe] (http://msdn.microsoft.com/en-us/library/aa365150) ** numaralı telefonu arayın ve başarısız olursa (dönüş değeri "INVALID_HANDLE_VALUE" ise) demektir. Başka bir örnek zaten aynı ada sahip bir boru oluşturdu, bu nedenle başka bir örneğin zaten çalışıyor olduğunu biliyorsunuz. – jweyrich