2012-05-16 42 views

回答

3

您可以使用Qt Solutions中的QtSingleApplication類。請注意,這不是一個標準的Qt類。你應該從gitorious

下載它QtSingleApplication組件爲應用程序提供 支持,只能是每個用戶啓動一次。

2

當應用程序啓動時,創建一個文件。當應用程序結束時,刪除該文件。

如果文件存在,退出並顯示錯誤消息。

+0

這就是問題 - 用戶可以重命名的應用程序,並四處移動它...( – myWallJSON

+0

這是一個獨立於平臺的方法,如果應用程序創建在其存儲在目錄中的文件,那麼這種方法將工作。 –

+0

他可以將應用程序複製到另一個目錄,並且這個新版本可以正常運行,它會在新位置創建一個新文件(雖然有一些解決方法,但是很麻煩) – Cray

0

你不需要Qt,因爲它是一個圖形庫。 只需使用一些正常的WINAPI方法即可完成此操作。 您可以創建如建議的文件(但在應用程序崩潰或斷電後會變得很奇怪),或者使用內存映射文件或其他全局對象來檢查您的應用程序是否仍在運行。 您也可以檢查進程列表以查看是否有其他副本正在運行。 另一件事是用你的窗口類來做一個FindWindow,這很容易,並且可以很好地工作。 有很多選項,只是搜索這個,這是一個常見的問題。 (你可以使用一些庫,但由於你只是針對Windows,所以我會使用FindWindow。)

+0

那麼,Qt不僅僅是用於GUI,還將許多其他操作系統功能抽象出來,所以直到很清楚Qt中沒有辦法做到這一點,我就等着用WinAPI。 –

+1

Qt不僅僅是一個圖形庫。它是一個**跨平臺**應用程序和UI框架。 – pnezis

+0

我知道這是跨平臺的,這就是爲什麼我寫到「因爲你是針對windows」。在這種情況下,我相信FindWindow是比說下載新的非標準類並使用它更明確的解決方案。 – Cray

相關問題