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