gpt4 book ai didi

C# 代码在 Pinvoke SendMessage 之后挂起

转载 作者:行者123 更新时间:2023-12-02 14:28:46 24 4
gpt4 key购买 nike

我正在为一个单独的 Windows 窗体应用程序自动执行测试过程。我目前正在使用 pinvoke 与其他应用程序进行通信。在此应用程序中,有一个按钮,单击时会创建一个新的弹出窗口。

我正在成功地与按钮和字段进行通信。但是,单击按钮时,SendMessage() 后面的代码不会运行。按钮已成功单击并出现窗口,但直到我手动关闭窗口后,以下代码才会运行。

这是我的代码:

    [DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);

.

    buttonHandle = FindWindowEx(parentHandle, new IntPtr(0), new IntPtr(0), windowTitle);
SendMessage(childHandle, BM_CLICK, new IntPtr(0), "");
MessageBox.Show("This won't show until I close the window");

一切正常,除了 SendMessage() 之后的任何代码行都不会运行,直到我关闭单击按钮时创建的新窗口。

谁能帮忙解释一下这里发生了什么?

谢谢!

最佳答案

SendMessage 将阻塞,直到调用的接收者完成消息处理。

您可以调用 PostMessage,这将允许您的程序在分派(dispatch)消息后立即继续执行。

关于C# 代码在 Pinvoke SendMessage 之后挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21489796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com