问题标签 [window-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 回答
1687 浏览

c# - 在 WPF 窗口中接收带有窗口消息的键盘事件 (HwndSource.AddHook)

我有一个带有文本框的窗口。光标位于文本框内。如果我按下一个键,那么我会在 WndProc 中收到一条消息(针对 KeyUp 和 KeyDown)。但是如果我在 KeyUp 和 KeyDown 事件中设置 e.Handled = true ,那么我不会收到任何关键消息:

是否可以在 WndProc 中接收 PreviewKeyDown/PreviewKeyUp 事件?

0 投票
1 回答
627 浏览

c++ - CStatic 子类控制无法接收输入消息

我正在使用基于 MFC 对话框的应用程序并有一个子类CStatic控件。我想在我的子类控件中接收 WM_MOUSEWHEEL 和其他消息,但不知何故这些消息永远不会到达。

这是我的对话框的样子:

在此处输入图像描述

我只是在做一些非常简单的绘图,并且希望能够通过滚动来上下移动我的列表。

我已经做了:

  • 更改 Tab-Order 以确保首先关注子类 CStatic 控件
  • 重写 OnNcHitTest 以始终​​关注子类 CStatic
  • 在侧面添加了滚动条
  • 为 WM_MOUSEWHEEL、WM_LBUTTONDOWN、WM_KEYDOWN 和 WM_VSCROLL 编写消息处理程序
  • 试图捕捉消息PreTranslateMessage

可悲的是,当我在对话框内滚动/按下一个键或用我的鼠标点击时,什么都没有被调用。消息只是没有到达。

这是我的鼠标滚轮处理程序,例如:

我不明白为什么没有输入消息被发送到我的子类控件。是否有一些开关可以为子类控件启用输入?

0 投票
1 回答
692 浏览

delphi - 应用程序未处理 VK_LEFT/VK_RIGHT?

我正在使用 PostMessage 将 Windows 消息发送到应用程序。现在,此代码在发送除 ARROW 键(VK_RIGHT 或 VK_LEFT)之外的任何键时都可以正常工作。

我安装了一个键盘挂钩来监视 VK_LEFT/RIGHT 的 WM_KEYDOWN/UP 消息,以查看 lParam 的样子,我遇到了一些奇怪的值,这是按下右箭头键 (VK_RIGHT) 时的 DebugView 输出。

如果我尝试使用硬编码的这些值发送消息,也没有任何反应,知道发生了什么吗?谢谢。

0 投票
1 回答
246 浏览

c# - 破解 lync 以开始录制

我参考了几个来源,发现无法使用 lync sdk 以编程方式控制屏幕录制。

因此,我采用了 spyxx.exe 方法,以便能够找出对话窗口获取的消息以开始录制(在 lync 2013 中)

如何开始 lync 录制?

先决条件:您应该为您的个人资料启用录音

立即开会 > 通话 > 共享桌面 > 选项 > 开始录制

录制步骤...

所以我开始了我的 spyxx 程序;开始见面对话;在 spyxx 中找到该窗口,并听取其消息。然后只使用键盘我尝试开始录制并随后记录了窗口接收到的窗口消息。

注意:如果你不想让spyxx.exe得到这么多的鼠标移动事件,你可以完全去掉桌面录制部分,直接打电话直接开始录制。

在研究这些消息时,我认为这两条消息应该可以解决问题......

但是,在尝试将这些消息发送到对话窗口时,它会失败。

这是负责该特定任务的代码存根:

此处提供完整代码

0 投票
1 回答
277 浏览

vb.net - 捕获 WM_NCHITTEST 消息,但继续检查 MouseEnter/-Leave

我有一个表格,我删除了标题栏但保留了边框(请参阅此答案)。

在上面的答案中,它声明需要FormBorderStyle设置为Sizableor SizableToolWindow,并且为了阻止表单变大,您需要捕获 WM_NCHITTEST 事件。唯一的问题是这样做不会引发正常Form_MouseEnterForm_MouseLeave事件。

有什么解决方法吗?

我的代码:

0 投票
0 回答
167 浏览

c# - 有没有办法 Usercontrols 或 IMessageFilter 实现可以获得 WM_DEVICECHANGE 消息?

我绝不是 Windows 消息专家 - 如果我问一些愚蠢的问题,请原谅我,但我无法帮助自己:

我有一个通过覆盖 WndProc 连接到 Windows 消息的表单,以便在连接或删除 USB 设备时获得通知(WM_DEVICECHANGE)。一切正常。

当我将此代码移动到底层用户控件时,我很惊讶它不再被调用来获取WM_DEVICECHANGE消息——尽管其他消息确实被捕获了。这是我用来覆盖的代码。

进一步寻找解决方法而无需简单地将代码放回表单中,我发现了IMessageFilter接口,但实现和注册它Application.AddMessageFilter并没有解决我的问题 - 事实上,当我注册我的主要时,WM_DEVICECHANGE消息甚至没有传递给我PreFilterMessage窗口 - 它只传递 WndProc 覆盖。

很明显,我对窗口消息的理解还远未完成,但我错过了什么?

有没有办法在WM_DEVICECHANGE不经过主窗口的情况下捕捉?并为我的未来提供帮助:我必须在哪里寻找一个很好的参考,哪些窗口消息被发送到哪里和哪里不发送,为什么?

0 投票
1 回答
214 浏览

c# - 如何使用处理程序在另一个应用程序(WM_MOUSEWHEEL)中禁用鼠标滚轮事件

我可以使用以下代码从我的应用程序中关闭另一个应用程序窗口(计算器):

但我想在同一个计算器应用程序窗口中禁用鼠标滚轮。我尝试了以下方法,但它不起作用:

0 投票
1 回答
84 浏览

wpf - 更改 lParam(调整矩形大小)时出现 AccessViolationException

我目前正在创建一个 WPF 窗口,它在调整大小时保留其纵横比。

我的第一个想法是处理 WM_SIZE 消息并在那里设置大小,但这会产生烦人的闪烁。所以我试图改变产生 AccessViolationExceptions 的 WM_Size 的 lParam。在 WM_SIZING 上操作 lParam 时也会发生同样的情况。

方面窗口.vb

0 投票
2 回答
975 浏览

c++ - 跟踪打开的子对话框

在 C++ 程序(embarcadero XE2,vcl)中,我想将窗口消息从父窗口发送到所有子窗口。为此,我注册了一个 windowMessage,PostMessage(handle,msg,wparam,lparam)在循环中为所有句柄发送消息,并在每个对话框中使用WndProc(TMessage& Message).

我的问题是跟踪打开的窗口句柄。由于大多数对话框都是通过 打开Show()的,因此可以同时运行多个对话框。

到目前为止,我使用 astd::vector<HWND>来存储 Window-Handles。但是,这需要我一次跟踪哪个句柄仍然有效。我可以通过向onClose对话框添加处理程序并使用对话框的句柄作为参数在主线程中调用一个过程来解决这个问题,因此它可以从向量中删除......

有没有更好的解决方案,比如Application.OpenForms(.NET)中的自我更新列表?或者也许是从主对话框通知子对话框事件的更好方法?

0 投票
0 回答
83 浏览

vb6 - 找出 WM_SIZING 的调用者

我有一个非常庞大的项目,包含数十万行代码。我的应用程序有一个复杂的图形界面。

出于某种原因,有时我的主要表单被调整大小,我只是不明白为什么/如何发生这种情况。

为了追查调整大小的原因,我安装了一个窗口子类。

这些是发生这种不希望的调整大小时 WM_SIZING 的窗口消息的参数:

调整大小仅每 2 小时发生一次,因此调试已经非常困难。

我如何进一步跟踪谁/哪个功能负责调整大小?