[問題] 如何避免程式被重複開啟

看板C_Sharp (C#)作者 (聖誕大快樂)時間18年前 (2007/06/14 09:34), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串1/1
寫了一個CE上的小程式 這個程式是由其他程式呼叫起來的 用CreateProcess 如果我希望在此程式已被執行的狀況下 若再一次被呼叫時,不要再開一個視窗 而是直接把此程式(已執行)拉到最上層 以避免重複相同功能的多個視窗同時執行 請問要如何做呢? 謝謝 我目前只想到可以在呼叫端做一個check 因為CE不支援GetProcessByName 所以目前我是用FindWindow檢查目前已執行程式的Title 如果有已存在的,取得此程序的Handler,再用ShowWindow來把他抓到上層 我自己知道這個方法很爛 第一個是因為我是在呼叫端來check,如果不確定這個程式會被什麼程式呼叫 我就沒辦法事先check,所以我希望能找到一個是在被呼叫端的檢查 但是,如果是在被呼叫端做check,那不就代表被呼叫的程式已經被啟動了 這就與我起初希望能不要用到兩份系統資源的想法抵觸了(因為CE的資源已經夠少了) 我不知道該怎麼解 可是我明明就有看到一些程式,他是永遠只有一個視窗的阿 另外請問一下,如果是在InitializeComponent的時候作這個check, 如果有已存在的,就把他拉上來,然後把自己Exit掉,這樣可行嗎? 這樣實際上系統資源有多少是已經分配過去了呢? 另外,我知道用FindWindow也是一個bad idea, 因為只要有相同的Window Title,就可能會有意外 請問一下,有什麼其他CE上可用的函式,可以幫助我知道某一特定Process的狀態呢? (如果真的沒有,我就只好開一個Global Variable來存他的狀態了..雖然這不是很好) 有點拉裡拉雜,謝謝大大

06/14 12:57, , 1F
程式要寫個find handle(api有),避免被重複執行
06/14 12:57, 1F
※ 編輯: saloonpass 來自: 211.20.98.2 (06/14 17:23)

06/14 17:23, , 2F
請問是否有比較詳細的解釋呢? 我不太瞭解
06/14 17:23, 2F
文章代碼(AID): #16S9iHZ1 (C_Sharp)
文章代碼(AID): #16S9iHZ1 (C_Sharp)