Windows Server 2003+Delphi6 编出的程序不能在WIN98下运行(50分)

  • 主题发起人 主题发起人 小八哥
  • 开始时间 开始时间

小八哥

Unregistered / Unconfirmed
GUEST, unregistred user!
我用Windows Server 2003企业版和DELPHI6+SP2+RTL3编译出的程序在XP,2000下一切正常,但在98下运行就提示 链接到不存在的输入USER32.DLL:SetLayeredWindowAttributes.
在D6中查找发现在windows.pas,以及Forms.pas中有对SetLayeredWindowAttributes的调用,而这两个单元(windows.pas,Forms.pas)的调用,我想在D6中编的程序一般情况下是都USES上的吧,不知道这样的情况应该如何处理,才能让我的程序在98下正常运行。
难道要把这个程序拿到支持98的Delphi的以前的版本下编译吗?如果程序中用了高版DELPHI的一些功能的话,岂不是要改动源程序,那不是太可怕了。
不知道大家对自己的程序如何保证它能跑在偿WIN98以及WIN2000以上的版本上
 
打包时,把相关动态连接库一起打包
 
与在哪儿编译无关。是由于2k和98操作系统提供的User32.dll不同引起的
 
查了一下以前用D6编的程序,发现在WIN98下运行没有问题,比对了现在这个程序中USES的单元,感觉不是USES的单元的问题,而是因为现在这个程序中调用了USER32.DLL:中的SetLayeredWindowAttributes,而SetLayeredWindowAttributes在WIN98的USER32.dll中是不支持的,这才是我导致我现在问题的根源。
但我程序中根本没调用SetLayeredWindowAttributes,用EXESCOPE查了一下现在这个程序的导入部分发现有两个USER32。DLL,在其中一个中存在着对SetLayeredWindowAttributes的调用,所以我想问一下如何查出是我的程序中的哪个控件调用的,或是哪个方法隐式调用了。这样才能改动成WIN98支持的程序。
 
不行才对要是行才有鬼!
只有向下兼容的道理呀?
 
是我在ABOUT窗口中一段让窗口透明的代码使用了SetLayeredWindowAttributes,
问题解决。
 
还不散分?
 
后退
顶部