这可能是一个愚蠢的问题,但它就在这里。
假设您正在与驱动程序 API 进行交互。您正在使用 C 并完全通过命令提示符进行操作。没有图形用户界面。是否可以在此类文件中接收和处理 Windows 消息?
我的意思是,在任何地方,我都将 Windows 句柄用作 NULL。我不知道这是否可能,甚至是否有意义。
这可能是一个愚蠢的问题,但它就在这里。
假设您正在与驱动程序 API 进行交互。您正在使用 C 并完全通过命令提示符进行操作。没有图形用户界面。是否可以在此类文件中接收和处理 Windows 消息?
我的意思是,在任何地方,我都将 Windows 句柄用作 NULL。我不知道这是否可能,甚至是否有意义。
要使用 GetMessage 或 PeekMessage,您的线程中不需要任何窗口:http: //msdn.microsoft.com/en-us/library/ms644946%28v=vs.85%29.aspx
消息发布到的线程必须已经创建了消息队列,否则对 PostThreadMessage 的调用将失败。
使用以下方法来处理这种情况。
创建一个事件对象,然后创建线程。
在调用 PostThreadMessage 之前,使用 WaitForSingleObject 函数等待事件设置为信号状态。
在将发布消息的线程中,调用 PeekMessage 如下所示,以强制系统创建消息队列:
PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE) > 设置事件,表示线程已准备好接收发布的消息。消息发布到的线程通过调用 GetMessage 或 PeekMessage 函数来检索消息。返回的 MSG 结构的 hwnd 成员为 NULL。