gpt4 book ai didi

c++ - 输出 LRESULT 到控制台

转载 作者:行者123 更新时间:2023-11-28 07:10:01 27 4
gpt4 key购买 nike

我正在尝试将文本从记事本窗口输出到控制台,但它始终为 0。我做错了什么?

int main()
{

HWND hwnd = (HWND)0x0031019C; // Window Handler of Notepad
char szBuf[4096];
HWND hwndEdit;
LRESULT result;

hwndEdit = FindWindowEx(hwnd, NULL, L"Edit", NULL); // Class for edit box
result = SendMessage(hwndEdit, WM_GETTEXT, sizeof(szBuf) / sizeof(szBuf[0]), (LPARAM)szBuf);

cout<<"Contents: \n"<<result;
cin.get();

return 0;
}

我尝试了 print_f,但它输出了不可读的字符:

printf( "Contents: %s\n", result, szBuf );

最佳答案

在我看来,您可能有点不匹配。

根据 L"Edit",您似乎在进行 Unicode 构建(否则,您会收到一条关于无法转换 wchar_t const[5 ]LPCSTR,代码将无法编译。

但是,如果您进行 Unicode 构建,WM_GETTEXT 会将 Unicode 数据写入您的缓冲区,因此您需要为缓冲区做好准备并使用 Unicode 而不是窄字符。

为方便起见,我对其进行了一些修改以查找记事本,而不是使用硬编码的窗口句柄。

#include <windows.h>
#include <stdio.h>

#define elements(b) (sizeof(b)/sizeof(b[0]))

int main() {

HWND hwnd; // Window Handler of Notepad
wchar_t buf[4096]={0};
HWND hwndEdit;
LRESULT result;

hwnd=FindWindowEx(NULL, NULL, L"Notepad", NULL);
hwndEdit=FindWindowEx(hwnd, NULL, L"Edit", NULL); // Class for edit box
result = SendMessage(hwndEdit, WM_GETTEXT, elements(buf), (LPARAM)buf);

printf("%S", buf);
return 0;
}

我构建了:

cl /DUNICODE whatever.cpp user32.lib

然后我做了一个快速测试,准确打印出我在记事本中输入的文本。为了验证结果,我在记事本中编辑了文本,再次运行,并打印出修改后的文本。

关于c++ - 输出 LRESULT 到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21154811/

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