我在查找可以包含资源的文件类型列表,可以通过LoadLibrary
或
函数加载。是否有可以包含资源的支持文件类型列表?LoadModule
我想用LoadResource
功能,其中第一个参数是句柄模块,我想知道支持什么类型的文件加载资源(可能含有的资源,并且可以通过LoadLibrary
或
功能加载)。LoadModule
脚注:
我正在致力于一个具有资源支持的翻译工具,并且我需要这个文件打开对话框过滤器。
感谢
我在查找可以包含资源的文件类型列表,可以通过LoadLibrary
或
函数加载。是否有可以包含资源的支持文件类型列表?LoadModule
我想用LoadResource
功能,其中第一个参数是句柄模块,我想知道支持什么类型的文件加载资源(可能含有的资源,并且可以通过LoadLibrary
或
功能加载)。LoadModule
脚注:
我正在致力于一个具有资源支持的翻译工具,并且我需要这个文件打开对话框过滤器。
感谢
我要找的文件类型的列表,它可以包含资源,并可以通过LoadLibrary和功能的LoadModule加载。
您不应该使用LoadModule
,它是为了兼容16位应用程序。 LoadLibrary
用于加载库:可执行文件和DLL适合账单。由于您需要“文件打开”对话框的信息,因此我假定您最感兴趣的是适用的文件扩展名。不幸的是,这并不容易,因为EXE和DLL不一定需要EXE和DLL扩展。例如,SCR
扩展名是屏幕保护程序的流行扩展,但实际文件是平面EXE。 BPL
是Delphi编译包的扩展,但这些文件实际上是DLL
的最多LoadLibrary
。
在我看来,你应该简单地过滤EXE和DLL,但让用户打开他们想要的任何东西。如果LoadLibrary
失败,您只会知道它是否与LoadLibrary
真正兼容。
我正在使用带有资源的dll文件。函数loadresource与loadlibrary函数一起工作正常。 例如,
..
var
LibHandle: THandle;
Bmp: TBitmap;
begin
LibHandle := LoadLibrary(PChar('MYDLL.DLL'));
if LibHandle <> 0 then
try
Bitmap := Tbitmap.Create;
Bitmap.LoadFromResourceName(LibHandle, 'ICON16'); // ICON16 - Resource name, which contains bitmap with size 16x16
..
except on E: exception do
..
end;
..
由于事实上,只要PE (COFF) specification而言,一个“可移植可执行”文件的扩展名并没有起到任何作用!即使没有扩展名的文件也可能是一个可以用LoadLibrary(Ex)加载的有效文件。正如Prund正确地说过:“如果LoadLibrary失败或者不成功,你只会知道它是否与LoadLibrary兼容......”!有可能,任何文件(甚至是一个名为myfile.doc的文件可能是一个“可执行文件”)。
.ocx .vxd .bpl和我想还有更多的。 –
+1和接受,关于'LoadModule'我错过了那个注释,无论如何,我一直只使用'LoadLibrary',我正在寻找一个可以包含资源的官方文件类型扩展,但是你说得对,我会留在'* .exe'和'* .dll' (* .exe; *。dll)| * .exe; *。dll; |所有文件(*。*)| *。*'。Thanks! – TLama
Even更好的办法是使用LoadLibraryEx和LOAD_LIBRARY_AS_DATAFILE。这样你就不会执行任何可能由DllMain触发的代码。 –