将Windows服务与交互式窗口(HWND)连接的好方法是什么?

时间:2010-10-07 20:58:03

标签: windows-services interactive windows windows-messages tapi

我有两个Windows技术,我想将它们联系在一起:一个TSP(一个TAPI服务提供商)和一个围绕着某些硬件的API。 API同步接受请求,但通过向传递的HWND发送消息来异步返回成功/失败/状态结果。

据我了解,问题是由于TSP作为Windows服务运行,因此其执行上下文无法访问大多数交互式Windows功能。所以,就像我想直接将两者连接在一起一样,我不能 - 据我所知,TSP没有(且实际上不能)具有HWND用于发送消息的API。 :-(

对于像我这样的人,他一次只在服务/交互式线路的一侧编写Windows内容,所有这些都有点令人头疼。但是Windows就是这样,必定有几种合理的方法可以在这条线上传递消息吗?

你怎么建议我尝试连接这两件事?谢谢! :-)

3 个答案:

答案 0 :(得分:1)

服务可以创建“消息窗口”(父窗口为HWND_MESSAGE的窗口)并运行消息泵。消息窗口没有UI,因此不与桌面交互。

答案 1 :(得分:0)

我建议使用MSMQ在两个不同的应用程序之间传递消息。我可能有点麻烦,但它会起作用。

答案 2 :(得分:0)

您的服务可以在Global对象命名空间中创建命名文件映射对象,然后您的交互式程序可以打开该文件映射。然后,您可以通过共享内存进行通信。