【发布时间】:2018-10-12 10:14:40
【问题描述】:
我正在编写一个用于连接生物识别设备的 Win32 C++ 服务。厂商提供的SDK使用MFC。我没有关于 MFC 的经验或知识。
平台:Windows 10
架构:x64
工具链:MSVC 2017
DWORD SGFPM_EnableAutoOnEvent (HSGFPM hFpm, BOOL enable, HWND hwnd, void* reserved)
参数
pFPM
SGFPM 对象的句柄
启用
TRUE:启用自动开启
FALSE:禁用自动开启
hwnd
接收自动开启消息的窗口句柄
保留未使用
第三个参数需要窗口句柄来接收 Auto-On 消息。 示例应用程序是基于 MFC 的 GUI 应用程序,而不是服务。
我的问题是第三个参数的值应该是多少。在 Linux 中,我们填写一个 NULL 值,但我不知道在我的情况下应该输入什么。
【问题讨论】:
-
你用你想接收消息的窗口的
hwnd(把它当作操作系统的标识符)填写它。你是如何找到这个值的?不知道.. 如果它是另一个应用程序,您可以使用 FindWindow 或者如果它是同一个项目的一部分,您可以使用 MFC 提供的 GetSafeHwnd 和 MFC 管理的窗口 -
@MarcoA.,这两个函数都说窗口句柄,它可以与服务一起使用吗?查找窗口需要窗口名称,因为我的程序是一项服务,所以它没有窗口名称。 GetSafeHwnd 也是用于 GUI 的 CWnd 类的成员,我的应用程序是用 C++ 开发的 Win32 服务。
-
服务通常没有窗口。您可以尝试传递NULL,在这种情况下如何处理参数取决于实现。
-
如果您需要 HWND,那么 Windows 支持“仅消息窗口”的想法,您可以创建它来接收消息,请参阅 stackoverflow.com/questions/4081334/…
-
@MarcoA.,使用 NULL 不会检测到事件。
标签: c++ windows winapi service mfc