gpt4 book ai didi

windows - 向由不同窗口的用户 session 启动的应用程序发送消息

转载 作者:可可西里 更新时间:2023-11-01 10:02:00 31 4
gpt4 key购买 nike

桌面应用程序(使用 Delphi 制作)由用户 A 启动。我们称它为“实例 A”。

用户 A 执行“切换用户”,用户 B 登录。

用户 B 运行相同的应用程序。我们称它为“实例 B”

我现在想要的是实例 B 向实例 A 发送消息的方式。

我尝试了以下操作:实例 A 将其句柄写入文件,因此实例 B 可以打开该文件、读取句柄并使用它向实例 A 发送消息,但它不起作用——也许是因为出于安全原因,Windows 不允许一个用户访问另一个用户正在运行的进程的句柄...

执行此操作的“坏”方法是让实例 A 每隔几秒检查一个特定的文件或注册表位置,这样实例 B 就可以在那里写一些东西,而实例 A 会得到它……但这显然很麻烦和不优雅的解决方案。

相反,我需要的是用户 B 的实例 B 向用户 A 的实例 A 发送无害消息的方法,之后实例 A 醒来并决定如何处理它。

感谢您的任何建议!

最佳答案

您不能使用 SendMessage、PostMessage 和类似函数,因为来自不同用户 session 的应用程序实例对您的应用程序不可用。

您可以使用全局命名空间中的命名管道、信号量等(即名称以“Global\”为前缀)。然后,在您的应用程序中创建一个单独的线程,例如,它将休眠直到来自其中一个的“信号”到达并相应地通知主窗口。

要节省资源,请使用 WTSRegisterSessionNotification 在发生 session 切换时收到通知,并仅在此时创建线程。

更多信息在这里: http://support.microsoft.com/kb/310153和这里: http://msdn.microsoft.com/en-us/library/ms997634.aspx

关于windows - 向由不同窗口的用户 session 启动的应用程序发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1673507/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com