【问题标题】:Interacting with windows messages with command based compiler使用基于命令的编译器与 Windows 消息交互
【发布时间】:2013-06-22 03:49:43
【问题描述】:

这可能是一个愚蠢的问题,但它就是这样。

假设您正在与驱动程序 API 进行交互。您正在使用 C 并完全通过命令提示符进行操作。没有图形用户界面。是否可以在此类文件中接收和处理 windows 消息?

我的意思是,在任何地方,我都将 Windows 句柄用作 NULL。我不知道这是否可能,甚至是否有意义。

【问题讨论】:

    标签: c winapi command-line windows-messages


    【解决方案1】:

    要使用 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。

    【讨论】:

    • 阅读一下consolegui 子系统。您可能想使用 GUI 子系统。
    猜你喜欢
    • 2021-07-02
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多