关于DLL文件的问题(100分)

  • 主题发起人 主题发起人 LeonSu
  • 开始时间 开始时间
L

LeonSu

Unregistered / Unconfirmed
GUEST, unregistred user!
请问:
如何从一个DLL文件中提取资源。
如从Cards.dll文件中提取扑克牌的Bitmap
 
先添加一个image1;
声明一下
var Linstance:Hmodule;
然后调库资源
Linstance:=LoadLibrary('Cards.dll');
Image1.Picture.Bitmap.LoadFromResourceID(Linstance,1);
 
To:Easylee
不好意思,我按照你的方法试过了,没用!

为什么没人回答,是这个问题太烂了,不值得回答吗?
 
请看如下代码:

procedure TMainForm.Button1Click(Sender: TObject);
var
h:thandle;
const
i:integer=1;
begin
h:=loadlibrary('cards.dll');
image1.Picture.Bitmap.LoadFromResourceID(h,i);
inc(i);
freelibrary(h);
end;

你可以连续按Button1,工作很正常的。如不正常,你可要检查Cards.dll是否存在,是否在Windows目录下,或者干脆拷贝到程序目录下。
 
这个问题2天前我刚回答过,在h:=loadlibrary('cards.dll');指明cards.dll
的完整路径就一定没有问题了
 
提问者:
如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
请认真阅读大富翁论坛规则说明 http://www.delphibbs.com/delphibbs/rules.asp
 
djdsz,既然是
const
i:integer=1;
还能
inc(i);
??????????????
 
问题是,在Win9x中Load cards.dll总是返回0,不行大家可以测试一下,在NT中没有任何问题!

关注.........
 
to :刘李子
inc(i)是正确的,i声明为类型常量,类似于C中的静态变量。
to :Kingron
98下我没测过,等我看看了
 
嘿,这里好玩,我得坐一下。
apple:=loadlibrary('card.dll');
找到card.dll里面得标识符号是关键,不一定是数字啦,不过一般是。
例子如下
speedbutton1.glyph.handle:=loadbitmap(apple,pchar(标识符号)):
 
请注意检索 :
http://www.delphibbs.com/delphibbs/dispq.asp?lid=456673
http://www.delphibbs.com/delphibbs/dispq.asp?lid=280497
 
检索也没有用,都是叫人家提取资源出来保存,没有什么用,不能从根本上解决这个技术问题。

我都说明白了:
我写过车时程序,在Win9x下,LoadLibrary('cards.dll')不能成功,总是返回0,
但是在NT和2000中没有任何问题,可以LoadLibrary()&LoadBitmap()并且用Image显示出来,
不知道是什么原因。这个问题在Borland新闻组我也见过,但是也没有答案。

P.S:这个问题我来提前,因为我实在想知道,如何解决类似的问题,因为有很多的DLL,Load的时候
情况跟这个一样,明明有这个DLL,但是Load就是为0。
 
我踢一脚!
 
我再踢!!!!!!
 
如果仅仅是为了调用Cards.dll,可以看看这个贴子!一个封装的单元!
http://www.csdn.net/expert/topic/117/117791.shtm
 
现在问题变成如何调用16位DLL的问题?
 
算了,看来没有知道了~~~``,不提了。
斑竹要结束就结束吧。
 
>我写过车时程序,在Win9x下,LoadLibrary('cards.dll')不能成功,总是返回0,
奇怪,我在Win98下怎么可以调出来,一点问题都没有。
 
帮助文件如是说:
Windows 95: If you are using LoadLibrary to load a module
that contains a resource whose numeric identifier is greater
than 0x7FFF, LoadLibrary fails.

 
接受答案了.
 
后退
顶部