【问题标题】:VB.NET SendMessage to Another Form in ProjectVB.NET SendMessage 到项目中的另一个窗体
【发布时间】:2013-04-14 03:21:12
【问题描述】:

我有一个 3 表单项目。

我希望 form3 使用 sendmessage 到 form2,但我无法让它工作。 如果它有任何不同,form2 上有一个 flash 对象(特别是游戏),我想将这些键发送给它。

这是我拥有的一些东西,但我不知道为什么它不起作用:

Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
                         (ByVal lpClassName As String, ByVal lpwindowname As String) As IntPtr
    Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
                 (ByVal hWnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As IntPtr
    Const WM_KEYDOWN As Integer = &H100
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

    Dim destination As IntPtr = FindWindow(Nothing, Window)
    SendMessage(destination, WM_KEYDOWN, Keys.Down, 0)

End Sub

为了澄清 window 是一个包含 form2.text 的字符串。

【问题讨论】:

    标签: vb.net forms project sendmessage sendkeys


    【解决方案1】:

    为什么不在form2中添加一个简单的方法,然后在form3中使用keydown时调用该方法。

    假设在 form3 中按下了一个键,所以你有代码:

        Private Sub Form3_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    
           If (e.KeyCode = Keys.Down) Then
               Form2.KeyIsPress()
           End If
    
        End Sub
    

    因此,在您的 Form2 中添加方法 KeyIsPress()

    Public Sub KeyIsPress()
    
        MessageBox.Show("Key Down is Press")
    
    End Sub
    

    我假设两种表单(即 Form2 和 Form3)都在运行。

    【讨论】:

    • 我使用 keys.down 进行测试。是的,它们都同时开放。但是我想发送一串密钥。 `例如1k。从from3到form2
    • 这个“钥匙串”到底是什么?
    • 基本上是游戏的热键。 ` 目标,1 使用第一个插槽中的项目。我使用了一段时间的 sendkeys,比如 SendKeys.Send("12`3k"),但是窗口必须不聚焦,我想做一些事情是窗口不必聚焦
    • 您是说您使用 SendKeys.Send() 一次从 form3 向 form2 发送多个键(比如数字 1、数字 2 和数字 3),并且 form3 必须始终保持焦点在 form2 上显示更改时?
    • 是的!但我不想使用 SendKeys 我希望能够将密钥发送到表单而无需集中注意力。 (发送消息)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多