从exe中检索资源文​​件

jon*_*scb 3 c++ winapi word-wrap

我用Visual C++ 2008包装文件,我已经弄清楚如何嵌入它们,但我无法弄清楚如何检索它们.我有一些C++经验,但没有Win32或Visual C++.包装的目标是运行一些代码,如果一切正常,它可以运行嵌入的文件.

我正在包装许多不同的文件,因此代码重用是关键,在所有情况下我都不知道嵌入文件的名称.但我可以将exe命名为与包装文件相同的名称,因此如果程序可以获得自己的名称,那么它也可以运行.

一些包装文件将是exes,其他文件将是由外部程序运行的文件.

编辑:这些文件嵌入了.res文件,它们不仅仅连接到exe的末尾.

Ash*_*ain 5

因此,您在EXE中嵌入了作为资源的二进制文件,并且您想要读取该文件?

尝试这样的事情(非常粗略,在MSDN上查找功能以获得正确的参数):

HRSRC hResource = FindResource(NULL, MAKEINTRESOURCE(id), type);
HGLOBAL hGlobal = LoadResource(NULL, hResource);
BYTE* pData = (BYTE*)LockResource(hGlobal);
int size = SizeofResource(NULL, hResource);
// ... do something with pData and size, eg write to disk ...
FreeResource(hGlobal); // done with data
Run Code Online (Sandbox Code Playgroud)

你会想要添加一些错误检查!