gpt4 book ai didi

c++ - winapi-从运行的文本编辑器检索文本的标准方法

转载 作者:行者123 更新时间:2023-12-02 09:59:20 25 4
gpt4 key购买 nike

是否有可以发送到文本编辑器窗口或特定WinApi调用的标准消息,该消息将检索当前编辑的文本的内容?
例如,检索记事本窗口的当前内容。 (假设尚未将最新文本写入文件中)
我尝试使用SendMessageWM_GETTEXT通过WM_GETTEXTLENGTH检索文本,但是我只能检索标题文本。

最佳答案

通常, no 没有为此的标准消息。
但是Windows的记事本有一个“编辑”子项,它对WM_GETTEXTWM_GETTEXTLENGTH(通常用于从输入控件中检索文本的消息)做出响应。
这是PoC展示的想法:

#include <iostream>
#include <vector>
#include <string.h>
#include <Windows.h>

BOOL CALLBACK enumProc(HWND hwnd, LPARAM) {
std::vector<char> buf(100);
GetClassNameA(hwnd, buf.data(), 100);
if (strcmp(buf.data(), "Notepad")) return TRUE;
hwnd = FindWindowEx(hwnd, NULL, "Edit", NULL);
if (!hwnd) return TRUE;
int textLength = SendMessageA(hwnd, WM_GETTEXTLENGTH, 0, 0) + 1;
if (textLength <= 0) return TRUE;
buf.resize(textLength);
SendMessage(hwnd, WM_GETTEXT, textLength, (LPARAM)buf.data());
std::cout << buf.data() << "\n";
return TRUE;
}

int main() {
EnumWindows(&enumProc, 0);
}
适用于Windows 10:

关于c++ - winapi-从运行的文本编辑器检索文本的标准方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63494331/

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