C++ c++;在运行时修改资源

C++ c++;在运行时修改资源,c++,winapi,runtime,resources,C++,Winapi,Runtime,Resources,是否可以在运行时以编程方式编辑可执行文件的资源?如果是,怎么做?如果没有,是否有另一个程序可以轻松地用来修改资源 谢谢,德里克。是的,这是可能的,尽管不是特别容易。它基本上需要编写一个资源编译器(至少对于要修改的资源类型) 例如,我曾经编写过一个菜单编译器,在运行时将其输入从数据库中取出(然后将结果保存回数据库)。如果源表未更改,则使用现有资源,否则将重新生成 在菜单资源(我相信对话框)的情况下,棘手的一点是某些成员仅根据标志设置以及严格的对齐要求出现 在修改.exe中已经存在的资源的情况下,您

是否可以在运行时以编程方式编辑可执行文件的资源?如果是,怎么做?如果没有,是否有另一个程序可以轻松地用来修改资源


谢谢,德里克。

是的,这是可能的,尽管不是特别容易。它基本上需要编写一个资源编译器(至少对于要修改的资源类型)

例如,我曾经编写过一个菜单编译器,在运行时将其输入从数据库中取出(然后将结果保存回数据库)。如果源表未更改,则使用现有资源,否则将重新生成

在菜单资源(我相信对话框)的情况下,棘手的一点是某些成员仅根据标志设置以及严格的对齐要求出现

在修改.exe中已经存在的资源的情况下,您需要将资源数据复制到内存缓冲区中(如果要添加新元素,则有额外的可用空间)(通过使用FindResource、LockResource、内存副本,然后解锁resource)

进行更改后,使用一个间接创建函数(即CreateMenuIndirect)并传递缓冲区的地址


资源API允许将这样的缓冲区写回应用程序二进制文件,但如果使用代码签名,则会破坏签名,因此要非常小心。我也不知道该API是否适用于实际运行的程序。

您是指Windows资源吗?这是特定于平台的,是吗?