使用C和Win32 API在.DLL中编辑字符串表

bsxbgnwa  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(98)

我使用Win32 API编写了一个C程序。我设法修改了一些图像并将它们保存在一个文件中。我试图修改字符串表,但我不能。我只是设法把它显示为一个普通的字符串。
图片来源:Resource Tuner:


的数据
我的C代码:

#include <windows.h>

int main() {
    const char* dllPath = "path/to/your_dll.dll";

    const int resourceID = 296; 

    const char* newText = "Hello World";

    HANDLE hUpdate = BeginUpdateResource(dllPath, FALSE);
    if (hUpdate == NULL) {
        return 1;
    }

    BOOL result = UpdateResource(hUpdate, RT_STRING, MAKEINTRESOURCE(resourceID), MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), (LPVOID)newText, strlen(newText) + 1);
    if (result == FALSE) {
        EndUpdateResource(hUpdate, TRUE); 
        return 1;
    }

    result = EndUpdateResource(hUpdate, FALSE);
    if (result == FALSE) {
        return 1;
    }

    return 0;
}

字符串
我的字符串地址是296。经过一些工作,我得到了这个结果,但它不被使用此.dll文件的软件识别。
它是这样表示的:'Hello World'没有任何表格缩进。
我试图构建与那里相同的结构,但它仍然被识别为单个字符串,而不是字符串表。

7kjnsjlb

7kjnsjlb1#

我同意社会人士的意见:字符串资源不同于任何其他资源格式。“它们不是作为单独的条目存储,而是打包成一组,每组16个字符串。
有关详细信息,请参阅以下主题:updating a string table with UpdateResource

相关问题