Sal*_*dor 4 delphi resources winapi
我正在使用TResourceStream类来读取资源,知道我想修改内存中的资源,但上面类的Write方法的文档说:
应用程序不应使用TResourceStream来编写正在运行的应用程序的资源.当应用程序尝试写入应用程序的资源时,Write会覆盖继承的方法以引发EStreamError异常.
由于TResourceStream(WriteBuffer,WriteComponent)的所有其他数据写入方法都调用Write来进行实际写入,因此调用TResourceStream的任何数据写入方法都会引发异常.
问题是,有没有办法使用任何WinApi函数修改正在运行的应用程序中的资源?或者资源是否只读?
资源只是指向映射到内存中的某些可执行部分的指针.
因此,您可以通过使用来更改此内存VirtualProtectEx,就像您可以修补代码的任何部分一样.
请参阅Ok以使用VirtualProtect更改Delphi中的资源?关于这个技术(这里关于resourcestring,但可以在任何锁定的资源上使用相同的API).