问题标签 [windows-messages]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
686 浏览

windows - 窗口消息通知 - 语言和区域设置

我想知道当我们更改区域设置,特别是日期时间和语言时发送的获胜消息是什么。

我知道当窗口主题更改时,我们会收到 WM_THEMECHANGED。

0 投票
3 回答
1065 浏览

delphi - 将消息传递到另一个窗口

我想编写一个应用程序,将它收到的每条消息传递到另一个窗口。例如,我有一个应用程序,用户可以在其中按下一些键、将鼠标移到它上面等,我希望将所有这些消息传递给例如 MS Paint。

我该怎么做呢?有任何想法吗?据我所知,将击键发送到另一个窗口可能会出现问题,所以也请指教。

编辑

好吧,也许我会给你更多的描述我在找什么。

我的应用程序在表单上显示另一个应用程序的窗口。现在我想使用发送到我的应用程序表单的消息(如按键、鼠标移动等)来控制另一个窗口。

我一直在考虑将我的表单收到的所有消息传递到我有点“嵌入”到我自己的应用程序的窗口中。“嵌入”是指让应用程序窗口显示在我的表单上。

也许我的问题还有另一种解决方案。请指教。

感谢您的时间。

0 投票
1 回答
381 浏览

c# - SendMessage API 函数的托管模拟或如何从 C# 向窗口发送消息?

我想将一个窗口消息从一个应用程序(控制台)发送到另一个应用程序的窗口。我可以使用 WinAPI 函数 SendMessage 或 PostMessage,但可能有托管方式吗?

0 投票
1 回答
443 浏览

c# - 如何处理 Windows 消息

我试图阻止 ListView 中的复选框在双击事件中被选中。

我已经做了:

但是选中的事件被调用并且复选标记在方框内闪烁,所以我真的认为这很糟糕。

我偶然发现了这个答案: Prevent ItemChecked event on a ListView from interfering with SubItemClicked using C#

这似乎是这样做的完美方式,但我不知道如何使这项工作。我试图阅读一些有关通知、消息等的信息,但没有发现任何不稳定的东西足以让我将其应用到我的代码中。

有人可以帮我解释一下吗?

非常感谢!

0 投票
1 回答
1345 浏览

c# - 在 C# 中跨越进程边界的窗口消息的 lParam 属性中收到的 IntPtr 填充结构

几天前我发布了这个问题,我对将 IntPtr 编组到结构有一些后续疑问。

事情是这样的:正如我引用的问题中所述,我在本机 Dll 上调用异步方法。这些方法与 Windows 消息通信它们的完成。我现在正确收到了 Windows 消息,并且在其中收到了一个 lParam 属性(IntPrt 类型)。根据我正在关注的文档,此 lParam 指向具有方法执行结果的结构。作为一个特定示例,我尝试填充的结构之一定义如下:

原始 C 签名:

我的 C# 定义:

现在有趣的部分:我调用的本机 Dll 属于一个独立的进程 FWMAIN32.EXE,它在同一台机器上运行(单个实例)。我相信我收到的窗口消息是特定于应用程序的(高于 WM_USER),它返回的 LParam 并没有真正指向我期望的结构,并且该结构位于 FWMAIN32.EXE 进程的内存空间中的某个位置。

最初,我尝试仅 Marshal.PtrToStructure (实际上希望很小)并且该结构充满了垃圾数据。我也尝试使用 GetLParam 获得相同的结果。最后,我尝试使用 ReadProcessMemory API 跨越进程边界,如这些帖子中所述:

C# p/invoke,从所有者绘制的列表框中读取数据

http://www.codeproject.com/KB/trace/minememoryreader.aspx

我得到异常代码 299(ERROR_PARTIAL_COPY:只有部分 ReadProcessMemory 或 WriteProcessMemory 请求已完成。)此外,我使用 ReadProcessMemory 得到的字节 [] 是:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

我的代码:

我像这样使用它:

在这种情况下跨越进程边界是否正确?使用 lParam 作为 ReadProcessMemory 的基地址是否正确?CLR 是否将 lParam 变成了我无法使用的东西?为什么我得到 299 异常?我正确获得了 FWMAIN32.EXE 的进程 ID,但我如何确定 lParam 指向其内存空间内?我应该考虑使用“不安全”吗?有人可以推荐这种方法吗?还有其他方法可以自定义编组结构吗?

我知道一个帖子上有太多问题,但我认为它们都指向解决这个问题。提前感谢大家的帮助,很抱歉我不得不做这么久。

0 投票
3 回答
1176 浏览

c++ - WM_TIMER 消息在单击并按住 Windows X 按钮时被抑制

我正在开发一个游戏,客户端需要继续处理 Windows 消息,否则该游戏可以被利用。为了在窗口重新调整大小和拖动事件期间解决这个问题,我们有一个WM_TIMER每 50 毫秒触发一次的消息,它将重新启动主事件循环。

问题是当用户单击并按住窗口客户端的 X 或最小化按钮时,此技术不起作用。(所以他们没有完成点击,他们只是停止了客户端。)

使用 Spy++,我看到的最后一条消息是:

在我移动鼠标之前什么都没有,WM_TIMER在我放开鼠标按钮之前没有任何消息。

所以问题是,当我处于将鼠标放在窗口的 X 按钮上的状态时,是否可以关闭某些东西来让客户端再次移动?或者我可以做些什么来让我们的“看门狗”WM_TIMER消息触发?

0 投票
1 回答
323 浏览

user-interface - Application.DoEvents 是否将消息发送到单独的线程?

我一直在尝试理解事件循环(不太顺利),并且我读过 Windows 消息传递循环是单线程的。如果是,Application.DoEvents 如何工作?事件循环不是一次处理一条消息并在处理每条消息/事件时阻塞吗?消息事件循环是否需要存在于与处理 Application.DoEvents 消息的线程不同的线程上?如果有单独的线程,我们将哪个线程称为“主”线程?我确定我错过了一些非常简单的东西,我只是不知道它是什么。

0 投票
1 回答
456 浏览

winapi - Windows Mobile 6 上的 WM_ACTIVATEAPP

WM_ACTIVATEAPP“桌面Windows”上有消息:

当属于与活动窗口不同的应用程序的窗口即将被激活时发送。该消息被发送到正在激活其窗口的应用程序和正在停用其窗口的应用程序。

Windows Mobile上有类似的东西吗?WM_ACTIVATE不能使用,因为我的应用程序有多个窗口。

我需要WM_ACTIVATEAPP(或类似的东西),因为我想在应用程序被激活/停用时请求/释放一些耗电资源(GPS、背光等)。

0 投票
1 回答
209 浏览

windows - 如果 Windows 应用程序消息队列中没有消息,那么消息循环还会继续运行吗?

我对 Windows 消息队列和消息循环有疑问。任何人都可以帮助我理解,或者请提供一些参考链接。

如果 Windows 应用程序消息队列中没有消息,那么消息循环还会继续运行吗?

如果然后运行,应用程序会挂起吗?因为循环不断发生?它是如何工作的?

谢谢,哈

0 投票
3 回答
16889 浏览

c# - 在哪里可以找到有关 WM Windows 消息代码的信息?

我在这里和那里看到专业用户回答很多像我这样的菜鸟问题,例如WM_PAINT = 0xf 我应该搜索什么以获得此代码的完整列表?对于所有版本的 Windows,它们都相同吗?它们也可以用于其他平台吗?