如何检测某个其他应用程序是否被单击打开? (vb.net)

时间:2016-05-10 08:58:02

标签: vb.net forms winforms

有没有办法让vb.net检测外部.exe的窗口/窗体是否被点击?

我已经调查了停用事件但无法使其工作,我不确定这是否是我实现所需结果所需的:

Private Sub Form1_Deactivate(sender As Object, e As EventArgs) Handles Form1.Deactivate
    MessageBox.Show("You are in the Form.Deactivate event.")
End Sub

运行上述代码时出现的错误如下:

  

严重级代码描述项目文件行抑制状态       错误BC30506 Handles子句需要在包含类型或其基类型之一中定义的WithEvents变量。

这对我来说没什么可识别的。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

很难检测到点击,但有一种解决方法。您可以将计时器设置为运行(在此示例中为每半秒)以检查应用程序是否正在运行:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Timer1.Enabled = True
    Timer1.Interval = 500  'in milliseconds
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Dim yourProcess() As Process

    yourProcess = Process.GetProcessesByName("notepad")

    If yourProcess.Count > 0 Then
        Timer1.Enabled = False   'Stop the timer
        MessageBox.Show("Your application has been opened!")
    End If
End Sub

此示例检查记事本是否已打开。如果它尚未打开,它将继续检查,直到它被打开,这几乎是你要求的(除了没有涉及点击)。要添加计时器,请转到表单设计器视图,然后只需拖动或双击“计时器”控件即可放置在表单上,​​此代码将全部设置完毕。

答案 1 :(得分:0)

我发现了问题...而不是form1.Deactivate它应该是Me.Deactivate