【问题标题】:Call SendMessage throwing a runtime error调用 SendMessage 引发运行时错误
【发布时间】:2017-06-22 00:50:33
【问题描述】:

我正在尝试将文本传递给第 3 方程序,但遇到了障碍。

我已经在我的程序中隔离了类处理程序 ID,并通过消息框进行了验证。但是,当我尝试发送文本时,我收到了运行时错误。

Public Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Int32
Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Int32, ByVal wMsg As Int32, ByVal wParam As Int32, ByVal lParam As Int32) As Int32
Public Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Int32, ByVal hWnd2 As Int32, ByVal lpsz1 As String, ByVal lpsz2 As String) As Int32

Dim hwnd As Integer
Dim hwindow2 As Integer
Dim main_view As Integer
Dim sub_window As Integer
Public Const WM_SETTEXT = &H0

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
hwindow2 = FindWindow(vbNullString, "Trace")
main_view = FindWindowEx(hwindow2, 0&, "#32770", vbNullString)
System.Threading.Thread.Sleep(10)
sub_window = FindWindowEx(main_view, 0&, "Edit", vbNullString)
MessageBox.Show(main_view)
MessageBox.Show(sub_window)
Call SendMessage(sub_window, WM_SETTEXT, 0, "test")
End Sub

任何帮助将不胜感激。 谢谢

【问题讨论】:

  • 如果有办法让我们知道那个运行时错误是什么。
  • 也就是说,我相当确定WM_SETTEXT 消息的值不为零。你可能想查一下。
  • 您检查过第 3 方文档吗?

标签: vb.net


【解决方案1】:

你可以考虑使用 PostMessage(),它是一个异步方法,它不会等待接收端的响应。虽然 SendMessage 方法是同步的,但它“在窗口过程处理完消息之前不会返回”。 查看帖子here的建议

指出错误消息以更好地理解问题也很好。

【讨论】:

    猜你喜欢
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    相关资源
    最近更新 更多