【问题标题】:C++ Windows Forms Operating System Message captureC++ Windows 窗体操作系统消息捕获
【发布时间】:2014-10-16 11:15:40
【问题描述】:

我有一个 c++ windows 窗体,它可以使用以下代码捕获在应用程序内发送的消息:

protected:
virtual void WndProc(Message% m) override 
{
switch (m.Msg)
{
    case WM_USER:
       MessageBox::Show("Encountered WM_USER message");
       break;

    case WM_DESTROY:
       MessageBox::Show("Closing application..");
       break;

    default:
       break;
}
__super::WndProc(m);
}

当 WM_USER 消息或 WM_DESTROY 消息在应用程序中发送时正确触发,但从其他应用程序发送时不会捕获消息。我需要能够访问未明确用于应用程序窗口的消息。

表单是使用创建和执行的 应用程序::运行(gcnew Form1()); 这也启动了消息循环。

是否可以通过这种使用 C++ 和 Windows 窗体的方法访问操作系统消息?

【问题讨论】:

    标签: c++ windows winforms


    【解决方案1】:

    每当您的窗口处理消息时,您的WndProc 方法就会执行。如果该方法没有执行,那么明显的结论是您希望捕获的消息没有发送到您的窗口。

    【讨论】:

    • 确实如此。看起来像UIPI 在工作。
    • 我明白,我知道我希望捕获的消息不是专门发送到我的窗口的。但是,有什么方法可以捕获这些没有发送到窗口的消息?
    • 也许吧。你应该问这个问题。
    • @FrédéricHamidi 或者消息只是发送到不同的窗口
    • 您所谓的“系统”消息与任何其他消息之间并没有真正的区别,就交付而言。如果你想捕捉到其他地方的消息,你需要知道它们要去哪里。在不知道你的问题是什么的情况下,我无法告诉你如何解决你的问题的细节。我所做的只是解释为什么 WndProc 没有在你希望的时候执行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多