gpt4 book ai didi

c++ - 从应用程序代码运行服务中提取窗口句柄

转载 作者:行者123 更新时间:2023-11-28 04:31:28 25 4
gpt4 key购买 nike

我正在编写用于连接生物识别设备的 Win32 C++ 服务。厂商提供的SDK使用的是MFC。我没有关于 MFC 的经验或知识。

平台:Windows 10

架构:x64

工具链:MSVC 2017

DWORD SGFPM_EnableAutoOnEvent (HSGFPM hFpm, BOOL enable, HWND hwnd, void* reserved)

Parameters

pFPM

The handle of the SGFPM object

enable

TRUE: enables Auto-On

FALSE: disables Auto-On

hwnd

Window handle to receive Auto-On message

reserved Not used

第三个参数需要Window句柄来接收Auto-On消息。示例应用程序是基于 MFC 的 GUI 应用程序,而不是服务。

我的问题是第三个参数的值应该是多少。在 Linux 中,我们填充了 NULL 值,但我不知道在我的情况下应该输入什么。

最佳答案

您必须创建一个窗口来接收来自函数 SGFPM_EnableAutoOnEvent 的事件,他们可能正在使用函数 SendMessagePostMessage , 无论如何你正在创建一个 Windows 服务并且它们没有 UI,服务在 winstation0 上运行并且 UI 对登录用户不可用,你的窗口无论如何都会被隐藏。

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_APP_SGAUTOONEVENT:
WORD isFinger= wParam;
SGDeviceInfoParam device_info;
memcpy(&device_info, (SGDeviceInfoParam*)lParam,sizeof(device_info));
//Add your code here...
return 1;
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
HWND CreateMyWindow(){
static const char* class_name = "DUMMY_CLASS";
WNDCLASSEX wx = {};
wx.cbSize = sizeof(WNDCLASSEX);
wx.lpfnWndProc = WndProc; // function which will handle messages
wx.hInstance = current_instance;
wx.lpszClassName = class_name;
if ( RegisterClassEx(&wx) ) {
return CreateWindowEx( 0, class_name, "dummy_name", 0, 0, 0, 0, 0, HWND_MESSAGE, NULL, NULL, NULL );
}
return NULL;
}

然后使用 CreateMyWindow 函数的结果,您可以在对 SGFPM_EnableAutoOnEvent 的调用中传递该参数

关于c++ - 从应用程序代码运行服务中提取窗口句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52777339/

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