【问题标题】:Change text file on runtime in resource.rc winapi c++在resource.rc winapi c ++中更改运行时文本文件
【发布时间】:2014-04-16 21:06:00
【问题描述】:

我想从资源文件中的文件中读取。没关系:

char LineBuffer[255]; HRSRC hRes = FindResource(0, MAKEINTRESOURCE(ID_TEXT_FILE), "0"); if(hRes != NULL) { HGLOBAL hData = LoadResource(0, hRes); if(hData != NULL) { sprintf(LineBuffer, "%s", LockResource(hData)); } }

但我想更改存储在资源中的 txt 文件中的文本。我读过一些关于它的东西,每个人都使用BeginUpdateResource(); UpdateResource(); EndUpdateResource();,但我不明白。任何帮助将不胜感激:) 代码 sn-p 会很棒。在此先感谢 ;-)

【问题讨论】:

    标签: c++ winapi text replace resources


    【解决方案1】:

    一个正在运行的进程不能改变它自己的资源。您必须使用单独的应用程序在主应用程序未运行时更新其资源。只有这样你才能使用(Begin/End)UpdateResource()

    【讨论】:

    • 嗯,我真的不这么认为......当我运行程序并在 Visual Studio 资源编辑器中打开它时,即使在运行时我也可以编辑应用程序中的所有文件。即使我下载了 ResourceHacker,我也能够在运行时编辑应用程序本身。所以一定有办法做到这一点,对吧?
    • Per MSDN: "应用程序必须能够获得对该文件的写访问权限;pFileName 引用的文件当前无法执行。"
    • @Petr MSDN:好的,谢谢。我想,当 MVS 可以在运行时写入文件时,应用程序也应该能够写入自己,但我错了,MVS 实际上创建了一个临时文件并更改了它。所以我将不得不以另一种方式来做。问题解决了。
    猜你喜欢
    • 2020-12-11
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多