我有兩個應用程序。他們兩人使用相同的資源。讓我們稱這些資源爲「個人資料資源」。在應用程序A關閉之前,應用程序B無法啓動。所以我有應用程序A運行並試圖關閉它,然後啓動應用程序B路徑。我探索了RegisterApplicationRestart
,但我無法完成。這是可能做到的嗎?我陷在其中,申請A是關閉的位置,然後我不能運行任何代碼,發動回到應用程序B.RegisterApplicationRestart與不同的路徑
0
A
回答
1
A
可以退出之前使用CreateProcess()
推出B
,通過它自己的進程句柄B
。在B
訪問資源之前,它可以使用WaitForSingleObject()
或相關函數等待A
的句柄。當手柄發信號時,A
已完全終止,因此B
可以使用CloseHandle()
關閉手柄並根據需要繼續。
要傳遞A
的處理句柄B
,A
可以:
打開使用
OpenProcess()
它自己的進程手柄GetCurrentProcessId()
進程ID,標記使用SetHandleInformation()
手柄爲可繼承,再通將B
的句柄值作爲命令行參數,將bInheritHandles
參數CreateProcess()
設置爲TRUE。運行
B
第一,並將它創建一個IPC監聽器(命名管道,郵筒,插座等),然後A
可以複製的B
自己的進程句柄的通過DuplicateHandle()
使用與GetCurrentProcess()
作爲源手柄和B
「 (從CreateProcess()
)作爲目標進程,然後通過IPC將重複句柄值發送到B
。
一種更簡單的技術是有A
通過它自己的進程ID,而不是它的處理句柄,以B
作爲命令行參數,然後B
可以使用OpenProcess()
打開A
的處理句柄。雖然這通常會工作,但它有一個小的競爭條件 - B
有機會打開進程句柄之前,A
可能會終止與OS可以重用它的進程ID爲新的不相關的進程,從而B
會得到一個句柄,並等待,錯誤的過程。
相關問題
- 1. 不同的路徑
- 2. Windows的CSS根路徑與Mac不同?
- 3. 開發與生產的不同路徑
- 4. Ant相對路徑 - 不同於jar路徑的build.xml路徑
- 5. 不同路徑Apache
- 6. 不同的URL路徑
- 7. PowerShell中不同的路徑
- 8. 不同的URL路徑
- 9. 文件的本地路徑與服務器上的路徑不同
- 10. 來自相對路徑的絕對路徑與不同的當前文件夾
- 11. 爲什麼Python站點包路徑與Windows路徑有不同的大小寫?
- 12. Spring Security:如何設置與上下文路徑不同的RememberMe cookie url路徑?
- 13. Python和IPython路徑不同
- 14. Java主路徑不同
- 15. 與目錄同名的乾淨路徑
- 16. 將不同的路徑應用於不同的路徑,其中每條路徑都在raphael.js集內
- 17. url的擴展名與rails中的格式化路由路徑和正常路由路徑不同
- 18. 不能與File.Delete(路徑)
- 19. Factory.Folder.fetchInstance方法不與路徑
- 20. 紅寶石gem環境的shell路徑不同於shell路徑
- 21. 相對路徑角度2。模板和css的不同路徑
- 22. PHP的require_once絕對路徑與相對路徑(不工作)
- 23. 如何創建一個包含與源相同的路徑但具有不同根的新路徑?
- 24. Xaramin SDK的路徑設置與SDK Manager中的設置不同
- 25. 與Maven的WAR名稱的上下文路徑不同
- 26. Clojure的 - 與路徑
- 27. udev的USB每次不同的路徑
- 28. 填充畫布路徑與不同顏色的部分
- 29. mod_perl處理與cgi不同的包含路徑?
- 30. 谷歌地圖上畫出兩條不同的路徑與PHP
如果應用程序正常終止,'RegisterApplicationRestart'將不會執行重新啓動。它不是爲了這樣做而設計的。你有錯誤的功能。我的猜測是,App A和App B都是firefox.exe,所以你可能需要一個單獨的可執行文件。 –
此外,如果應用程序異常終止或掛起,觸發重新啓動,將提示用戶是否實際執行重新啓動。僅當操作系統使用EWX_RESTARTAPPS標誌重新引導時,纔會自動重新註冊應用程序,例如由需要替換正在運行的應用程序上的文件的安裝程序。 –
嗨@DavidHeffernan非常感謝yep我的用戶所做的是他們有firefox.exe和firefox_beta.exe和firefox_alpha.exe,然後是firefox_nightly.exe,他們正在運行firefox.exe點擊了一個按鈕重新啓動Firefox到Firefox _ ** *。可執行程序。目前我有一個目標設置爲firefox.exe的快捷方式文件,因此當他們將版本更改爲beta時,我更改了快捷方式的目標,然後我需要在關機後重新啓動該快捷方式。 – Noitidart