【问题标题】:How to handle user clicking mouse outside a form?如何处理用户在表单外单击鼠标?
【发布时间】:2013-12-08 03:47:30
【问题描述】:

我正在 VB.NET 中创建一个项目,我们在其中跟踪光标在屏幕上任意位置的位置。
在 Timer 1_Tick Event 中,我将频率设置为 1 毫秒,以便它可以更频繁地跟踪位置。以下是我在 Timer1_Tick 事件中插入的代码

    Me.Cursor = New Cursor(Cursor.Current.Handle)
    Label4.Text = Cursor.Position.X
    Label5.Text = Cursor.Position.Y

我希望用户在表单外单击并拖动以获取所选区域的尺寸(以像素为单位)。任何人都可以请帮助如何控制鼠标点击表单外?

提前致谢!

【问题讨论】:

  • 如果用户点击屏幕中的任意位置,您的代码将找到光标位置。您的目标是什么?
  • 光标位置自动找到而不点击,我想处理表单外的任何点击。如果用户在表单外点击并拖动光标,我想要所选区域的尺寸。

标签: vb.net


【解决方案1】:

听起来您正试图从应用程序外部获取一个区域,您可以尝试使用全局 Hook,例如可以从 CodePlex Project 获得。

这是一个简单的示例,它响应 MouseDown 和 MouseUp 事件创建一个 Rectangle 然后将结果打印到一个 TextBox 它应该让您知道如何继续。

Imports MouseKeyboardActivityMonitor
Imports MouseKeyboardActivityMonitor.WinApi

Public Class Form1
    Private m_MouseHookManager As MouseHookListener
    Dim tempPoint As Point

    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        m_MouseHookManager = New MouseHookListener(New GlobalHooker)
        m_MouseHookManager.Enabled = True
        AddHandler m_MouseHookManager.MouseUp, AddressOf HookManager_MouseUp
        AddHandler m_MouseHookManager.MouseDown, AddressOf HookManager_MouseDown
        TextBox1.ScrollBars = ScrollBars.Vertical
    End Sub

    Private Sub HookManager_MouseUp(sender As Object, e As MouseEventArgs)
        Dim r As Rectangle = New Rectangle(tempPoint.X, tempPoint.Y, e.X - tempPoint.X, e.Y - tempPoint.Y)
        TextBox1.Text += "Left: " & r.Left & vbCrLf
        TextBox1.Text += "Right: " & r.Top & vbCrLf
        TextBox1.Text += "Width: " & r.Width & vbCrLf
        TextBox1.Text += "Height: " & r.Height & vbCrLf
        tempPoint = Point.Empty
    End Sub


    Private Sub HookManager_MouseDown(sender As Object, e As MouseEventArgs)
        tempPoint = e.Location
    End Sub
End Class

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    相关资源
    最近更新 更多