系统服务可以调用SendMessage给特定的窗口发送消息么?

时间:2022-01-22 19:44:46
有个系统服务,是由系统帐户运行的。

想另外搞一个GUI程序能在启动后监控这个服务
接受这个服务程序发过来的状态等信息

服务一直在干活,GUI启动后能察看service的状态,关掉后
service就不必再发送报告给GUI.

现在想在GUI程序启动后,将自己的HWND告诉服务程序
然后服务程序把一些状态信息通过SendMessage(HWND,...)
告诉前台的GUI程序。

这样可行么?试了一下,没成功。选中“允许服务与桌面交互”
也不行。


对于这样的情况采用什么样的通信方式比较好呢?

6 个解决方案

#1


人多了。顶一下。

后来我想了想,也许用socket比较好。
有两种方式:
1.当前台程序启动的时候,自己监听某个端口,再把自己的端口通知后台服务。
2.后台服务自己监听端口,前台程序启动后去连它取数据。这样可能会好一些。

#2


可以吧!
我用服务就可以获取窗口内容,关闭窗口等操作!

#3


以前也遇到过这个问题,后来因为服务没有窗口,不知道句并用哪个,就用信号量来同步了

#4


up

#5


fanze2003(孤独的狼) :
你在服务的属性里选择那个允许与桌面交互了么?
service的帐户应该是系统帐户,
能给某个登陆的用户打开的窗口发消息?

#6


我的程序初次运行后自动安装服务自动设置为 允许与桌面交互

对窗口的操作是放在动态链接库中进行的

#1


人多了。顶一下。

后来我想了想,也许用socket比较好。
有两种方式:
1.当前台程序启动的时候,自己监听某个端口,再把自己的端口通知后台服务。
2.后台服务自己监听端口,前台程序启动后去连它取数据。这样可能会好一些。

#2


可以吧!
我用服务就可以获取窗口内容,关闭窗口等操作!

#3


以前也遇到过这个问题,后来因为服务没有窗口,不知道句并用哪个,就用信号量来同步了

#4


up

#5


fanze2003(孤独的狼) :
你在服务的属性里选择那个允许与桌面交互了么?
service的帐户应该是系统帐户,
能给某个登陆的用户打开的窗口发消息?

#6


我的程序初次运行后自动安装服务自动设置为 允许与桌面交互

对窗口的操作是放在动态链接库中进行的