c++ - 向控制台应用程序发送 Windows 消息

标签 c++ winapi dll console-application

我有一个向 UI 应用程序发送消息的 DLL,DLL 发送的大多数消息都包含文本,GUI 应用程序获取消息并根据消息采取行动。

我需要创建一个使用相同 DLL 的控制台应用程序,是否有任何选项可以将消息发送到控制台应用程序,因为在控制台应用程序中我没有 Windows 消息过程。

在 GUI 应用程序中,我加载 DLL 并使用其函数之一将当前 HWND 设置为 DLL,一旦执行此操作,所有消息都会发送到我的 GUI。

我考虑过向 DLL 添加一个 bool 值,以了解该 DLL 是从 GUI 界面还是从命令行控制台应用程序调用的,但这涉及 DLL 代码中的大量更改。

如何获取消息或将消息重定向到控制台应用程序(命令行界面)?

DLL、GUI 和控制台应用程序使用 win32 API 以 C/C++ 进行编码。

提前致谢

最佳答案

您可以在控制台应用程序中创建窗口,就像在标准 Windows 应用程序中一样。如果您创建 message only window (在调用CreateWindow()时将窗口的父窗口设置为HWND_MESSAGE),那么它将不可见,但仍然能够接收Windows消息。您需要在控制台应用程序中的某个位置运行标准 Windows 消息循环,以便将消息分派(dispatch)到您的窗口。

关于c++ - 向控制台应用程序发送 Windows 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36043832/

相关文章:

c++ - 用线程产生旋转效果

c++ - 使用凭据提供程序登录

c++ - 如何确保 Windows 2008 R2 将 SERVICE_CONTROL_PRESHUTDOWN 控制通知传递给服务

c++ - 我怎样才能 "unelevate"一个进程

c - 动态链接和全局变量

c - 如何从C中的dll获取模拟器(.exe)路径

c++ - 具有不同模板参数的相同类不能访问彼此的私有(private)字段

c++ - C++中的数组类成员初始化

c# - 在 C# 项目中使用 C++ DLL

c++ - C++ 中具有十六进制值的数组