从服务应用程序调用时,Windows API :: FindWindow函数失败.GetLastError()也返回0(成功?).这是一些特权\访问权限问题吗?你认为这是设计问题,我应该使用另一种IPC方法吗?
leppie是对的,Windows服务通常在与桌面交互时被拒绝.您可以在XP和更早版本中绕过它,但在Vista及更高版本中无法做到.您最好将桌面和用户交互委派给GUI应用程序.请参阅此文档了解详细信息
服务在会话0中运行.在XP及更早版本中,第一个登录用户也在会话0中运行,后续用户在会话1及更高版本中运行.如果服务设置为"与桌面交互",则它可以访问在会话0中运行的任何用户窗口.但是,从Vista开始,用户永远不再在会话0中运行.FindWindow()仅在调用Session的上下文中工作,因为不能跨会话边界访问窗口.