您的位置:首页 > 其它

用ImessageFilter接口实现截获键盘消息

2013-08-31 18:58 225 查看
imessagefilter 接口

imessagefilter 接口允许应用程序在消息被调度到控件或窗体之前捕获它。

可以将实现 imessagefilter 接口的类添加到应用程序的消息泵中,以在消息被调度到控件或窗体之前将

它筛选出来或执行其他操作。若要将消息筛选器添加到应用程序的消息泵中,请使用 application 类中的

addmessagefilter 方法。

application.addmessagefilter 方法

添加消息筛选器以便在向目标传送 windows 消息时监视这些消息。

[visual basic]

public shared sub addmessagefilter( byval value as imessagefilter )

参数

value

您要安装的 imessagefilter 接口的实现。

备注

使用消息筛选器来防止引发特定事件,或在将某事件传递给事件处理程序之前使用消息筛选器对其执行特

殊操作。消息筛选器对特定线程是唯一的。

若要防止调度某消息,传递给该方法的 value 参数实例必须用处理该消息的代码重写 prefiltermessage 方法

。该方法必须返回 false。

警告 向应用程序的消息泵添加消息筛选器会降低性能。

示例

[visual basic, c#, c++] 必须先提供 imessagefilter 接口的一个实现,然后才可以使用消息筛选器。

下面的类创建一个名为 testmessagefilter 的消息筛选器。此筛选器阻止与鼠标左键有关的所有消息。

[visual basic]

' creates a message filter.

public class testmessagefilter

implements imessagefilter

public function prefiltermessage(byref m as system.windows.forms.message) _

as boolean implements imessagefilter.prefiltermessage

' blocks all the messages relating to the left mouse button.

if ((m.msg >= 513) and (m.msg <= 515)) then

console.writeline("www.tydsyy.comprocessing the messages : " & m.msg)

return true

end if

return false

end function

end class

用esc键退出程序

  

   implements imessagefilter

  private sub form1_load(byval sender as system.object, byval e as system.eventargs) handles

mybase.load

'assign message to app and form

application.addmessagefilter(me)

end sub

  public function prefiltermessage(byref m as system.windows.forms.message) as boolean

implements imessagefilter.prefiltermessage

dim keycode as keys = ctype(m.wparam.toint32(), keys) and keys.keycode

if keycode = keys.escape then

end  '结束程序。我们在此可以调用各种方法、过程。

end if

   end function
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: