gpt4 book ai didi

C# - 从 SetWindowText 获取事件

转载 作者:行者123 更新时间:2023-12-04 07:01:50 27 4
gpt4 key购买 nike

我们正在为现有的 VB6 应用程序编写一个插件(通过 COM 互操作),我们需要一些他们不支持的功能。如果我们能以某种方式接收一个事件,当特定控件的窗口上的文本发生变化时,我们就可以轻松获得所需的功能。

我们已经可以使用 FindWindow 获取控件的现有窗口句柄并使用 GetWindowText 获取文本。

当窗口上的文本更改时,是否有任何非托管/pinvoke 方法来接收事件?

我们不想使用 while 循环进行轮询——我们可能希望将来在他们的几个控件上执行此操作。

PS - 我知道有一些方法可以拦截 p/invoke 调用(google EasyHook),但我们不想拦截对 SetWindowText 的每个调用。我们只想为一个控件接收它,而使用 EasyHook 之类的东西可能会增加不必要的复杂性。

最佳答案

您可以尝试在 C# 中创建一个从 NativeWindow 派生的新类。

覆盖 WndProc 函数,如果 WM SETWINDOWTEXT 类型的消息添加您的功能 - 忽略所有其他消息并调用基类实现

protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM SETWINDOWTEXT:
// Custom code here
break;
}
base.WndProc(ref m);
}

创建此 C# 类的实例,并使用 FindWindow 获得的控件的 hWnd 调用 AssignHandle 函数。

有关更多详细信息和更深入的解释,请参阅此链接:
Overriding WndProc in the NativeWindow class

关于C# - 从 SetWindowText 获取事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1709597/

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