问题标签 [imessagefilter]

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 投票
1 回答
1087 浏览

.net - WM_DESTROY, WM_CLOSE 绕过 IMessageFilter

以下是我的消息过滤器:

我确认我正在过滤大多数消息而没有问题。但是,在单击窗口的关闭按钮(、、和)后,我没有收到任何WM_CLOSE发送的WM_DESTROY消息。为什么是这样?WM_NCDESTROYWM_QUIT

0 投票
1 回答
1977 浏览

c# - 在 Internet Explorer 中托管 C# 控件时不调用 PreFilterMessage

这是一个示例: 1. 创建一个类'public class RichTextBoxEx:RichTextBox,IMessageFilter'。2. 实现'public bool PreFilterMessage(ref Message m)'。3. 进入控件的编辑模式并输入任意文本。

结果如上所述......当控件托管在浏览器中时,不会调用“PreFilterMessage”。此外,通过授予 FullTrust 访问权限来控制 PreFilterMessage 不会被调用

0 投票
1 回答
238 浏览

c# - 实施集中热键处理/处理

我正在做一个项目,我需要在应用程序中实现可自定义的热键。有许多不同的表单和用户控件需要实现不同的热键子集。我想在一个中央 MessageFilter 类中实现所有的处理和处理。

我想有一个具有所有热键方法的基类,然后只覆盖每个表单/控件中所需的子集,但我不知道如何让所有表单和用户控件共享一个基类。这将允许我做这样的事情来处理热键:

public bool PreFilterMessage(ref Message m)
{
HotKeyAction action = GetActionForKey(keydata);
BaseClass instance = GetBaseClassFromFocusedFormOrControl();
switch (action)
{
case HotKeyAction.Action1: instance.Action1() break;
}
}

我在想这个错误的方式吗?

0 投票
2 回答
1965 浏览

delphi - 为什么我的 IMessageFilter 并不总是有效?

我正在研究 Word 自动化并摆脱“呼叫被被呼叫者拒绝”/“消息过滤器指示应用程序正忙”错误,我实现了 IMessageFilter。当我直接自动化 Word 时,messagefilter 就像一个魅力:

但是当我调用 TOleContainer.DoVerb(ovPrimary) 时,Word 显示模式对话框时仍然会出错。为什么 MessageFilter 不能与 TOleContainers DoVerb 方法一起使用?

0 投票
1 回答
136 浏览

mono - 如何使用传递给 Gdk.Window.AddFilter 的 FilterFunction?

在将它们传递给小部件的标准处理程序之前,我需要拦截几个事件,所以我已经这样做了:

所以,稍后我定义了 PreFilterMessage 方法:

但问题是,当我测试它时,无论什么消息到达窗口(KeyEvent、ButtonEvent 等),它总是打印“Nothing”,所以我每次只会得到空事件。在某处我读到真正的信息是通过 xEvent 参数获得的,但这只是一个 IntPtr,所以我不知道如何从中获取我需要的信息(事件类型、指针坐标等)。

谁能告诉我该怎么做?提前致谢。

0 投票
3 回答
8402 浏览

c# - 如何在不窃取焦点和 P/Invoke 的情况下将消息(例如鼠标滚轮)转发到另一个控件?

当我用鼠标在这个控件上时,我想转发一条消息(例如 WM_MOUSEWHEEL),而不窃取焦点。这个问题可以很容易地解决,使用 IMessageFilter 拦截消息(将添加到应用程序消息泵中)并使用 P/Invoke(d) SendMessage() 转发它。问题是:我可以在不使用 P/Invoke 的情况下做同样的事情吗(我在 StackOverflow 中找到的解决方案使用 P/Invoke)?如果不是,为什么?

下面的代码是我使用 P/Invoke 的解决方案。我只用它new MessageForwarder(control, 0x20A)

}

编辑:我的答案中的完整解决方案

0 投票
2 回答
320 浏览

c# - 如何禁用过滤模态对话框的按键事件

我遇到了一个奇怪的问题,似乎必须追查到以下根本原因。环境 C# (.NET 2.0):

我的代码正在使用某个供应商的框架,并且一次打开了一个模式对话框。似乎该框架正在过滤应用程序的“Enter”按键(可能通过实现 IMessageFilter)。因此,通过按“确定”按钮关闭我的对话框会导致奇怪的行为 - 通过鼠标单击“确定”关闭对话框可以正常工作。不幸的是,更改框架的代码不是一种选择。所以我想禁用框架在我的对话框中注意到“Enter”(可能还有“ESC”)按键。有谁知道如何做到这一点?

编辑:

我“解决”了这个问题。请参阅下面的已接受答案。

0 投票
1 回答
514 浏览

objective-c - 在 iMessage 中将快照作为附件发送

我们可以使用 MFMessageComposer 在邮件中将照片作为附件发送,我想知道我们是否可以在 iOS5 中使用 iMessage 做同样的事情。

提前致谢。

0 投票
5 回答
14812 浏览

imap - Mozilla Thunderbird 中的高级消息过滤规则

Thunderbird 的过滤机制非常适合简单的事情。但我想做类似的事情

(如果邮件包含 xy 或发件人是 yz)并且状态为已读,则移至垃圾箱

问题是,一个过滤规则只能匹配任何(= OR)或所有(=AND)过滤条件。我尝试通过首先在第一个过滤器中使用不可能的标签组合标记所有消息来解决这个问题,然后使用第二个过滤器将所有标记+标记的消息移动到垃圾箱(如果它们被读取),但这效果很差,因为有时消息没有被标记,有时标记的消息没有被删除。

所有这些的目的是在我阅读它们后立即删除不重要的或通知电子邮件。当然,我可以为它们中的每一个做一个单独的过滤器,但是如果我想改变一些东西,对于所有 >20-30 的过滤器规则来说,它会变得很乏味。

是否有可能以某种方式侵入过滤器配置,或者是否有其他仅使用一个过滤器的复杂过滤方式?

顺便提一句。如果这很重要,我正在使用 Gmail+IMAP。

0 投票
0 回答
200 浏览

.net - 使用 iMessageFilter 的性能损失

我想iMessageFilter在我的 .Net Winforms 应用程序中实现检查某些消息(你知道,WM_[messages])。我已经搜索过,但在使用此过滤器时找不到任何有关性能损失的信息。有没有人对应用程序性能的实施和影响有经验iMessageFilter

我知道这也取决于我将在PreFilterMessage函数中做什么。它将Message.Msg与特定的 WM_[messages] 或其中的一个范围进行比较,最多 20 个左右。

将获得我的“答案”标记的帖子可能包含:

  • 您对 iMessageFilter 的体验(具有绝对性能数据?)。

  • 和/或描述如何使用 iMessageFilter 监控/确定性能损失的方法。(将 PerformanceCounter 与 CPU 滴答结合使用?)。如果它是应用程序上 CPU 使用率的相对百分比,则结果将是最好的。

先感谢您。