我用Visual C ++ 2008包装文件,我已经弄清楚如何嵌入它们但我无法弄清楚如何检索它们。我有一些C ++经验,但没有Win32或Visual C ++。包装的目标是运行一些代码,如果一切正常,它可以运行嵌入文件。
我正在包装许多不同的文件,因此代码重用是关键,在所有情况下我都不知道嵌入文件的名称。但我可以将exe命名为与包装文件相同的名称,因此如果程序可以获得自己的名称,那么它也可以。
一些包装文件将是exes,其他文件将是由外部程序运行的文件。
编辑:这些文件嵌入了.res文件,它们不仅仅连接到exe的末尾。
答案 0 :(得分: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
您需要添加一些错误检查!
答案 1 :(得分:0)
您需要知道的主要内容(应该出现在.RC文件中,并将其编译为.res文件)是资源的名称。从那里,您可以使用FindResource
和LoadResource
来加载数据。您显然会将该数据写入临时文件并执行该文件。