我有一個通過USB與外部設備進行通信的應用程序。它在後臺工作,並定期檢查設備是否連接到USB並開始從中讀取數據。當設備連接時,應用程序還向用戶顯示一個窗口。安裝該應用程序每個用戶在啓動時,用戶登錄該應用程序是用C++使用QT和適用於Windows和Mac OS X如何檢查進程的所有者是否是當前登錄的用戶? (QT應用程序)
的問題是,如果用戶安裝了應用程序和登錄在同一時間(例如,通過「切換用戶」功能),有2個應用程序正在運行,並且它們都將開始與設備進行通信,這會導致數據損壞。
我想執行一個檢查,防止應用程序啓動通信,如果該進程的所有者當前不活動。然後,只有活動用戶啓動的實例纔會與設備進行通信(假設只有一個用戶可以活動,但對個人電腦來說沒問題)。理想情況下,我很高興看到基於QT的解決方案可以在Windows和OS X上運行,但平臺特定的解決方案也可以。
我想知道如果一個解決方案,激活應用程序的窗口和檢查後,如果窗口是活動的,將工作。
最好的問候, 米哈爾
您可能會想到將GUI和設備通信方面分離爲單獨的進程,後者是一個系統服務。您可以查看[qtservice](https://qt.gitorious.org/qt-solutions/qt-solutions/source/fd22bee22274975c56f1c10d87ee9fd2c0818f83:qtservice)解決方案。 –