gpt4 book ai didi

c# - 无法阅读另一个应用程序的标题

转载 作者:太空宇宙 更新时间:2023-11-03 18:45:37 31 4
gpt4 key购买 nike

跳转到我如何在我的主程序中找到窗口句柄...

在 C# 中

我运行 notepad.exe,然后在其中输入一些内容,然后使用 SPY++ (0x111111) 找到主窗口句柄,然后

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]

internal static extern int GetWindowText(IntPtr hWnd, [Out] StringBuilder lpString, int nMaxCount);
.
.
.
GetWindowText((IntPtr)(0x111111), str, 1024);

这段代码工作正常,并返回主窗口的标题。

: : 但是当我做同样的事情来找到 notepad.exe 的子项的标题时,它只是将 str 设置为空。 spy++ 告诉我 child 的标题有值(value)。

最佳答案

GetWindowText function documentation明确指出“GetWindowText 无法检索另一个应用程序中控件的文本。...要检索另一个进程中控件的文本,请直接发送 WM_GETTEXT 消息,而不是调用 GetWindowText。”

您可以使用以下代码检索控件的文本:

[DllImport("user32.dll", EntryPoint = "SendMessage")]
public static extern IntPtr SendMessageGetText(IntPtr hWnd, uint msg, UIntPtr wParam, StringBuilder lParam);

const uint WM_GETTEXT = 13;
const int bufferSize = 1000; // adjust as necessary
StringBuilder sb = new StringBuilder(bufferSize);
SendMessageGetText(hWnd, WM_GETTEXT, new UIntPtr(bufferSize), sb);
string controlText = sb.ToString();

关于c# - 无法阅读另一个应用程序的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4604023/

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