我有两个应用程序。他们两人使用相同的资源。让我们称这些资源为“个人资料资源”。在应用程序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