主题:  判断directx版本

灰色幽灵

职务:普通成员
等级:1
金币:0.0
发贴:114
注册:2001/10/11 10:07:05
#12002/7/12 11:07:05
怎么样判断directx版本,如果不是8.0就提示安装,否则继续运行.我不是十分清楚注册表信息,请详细些,



酷狗

职务:版主
等级:2
金币:10.0
发贴:610
注册:2000/9/16 9:26:36
#22002/7/12 13:26:11
不用读注册表,有一个更简单的方法,只要查找一下wiindows系统目录下的system32下是否有d3d8.dll可以了(注意win9x,好象是system)。当然这个方法也要其它的Xtra来配下能完成,由于查找的方法可以很多种就不在这,多讨论了!



灰色幽灵

职务:普通成员
等级:1
金币:0.0
发贴:114
注册:2001/10/11 10:07:05
#32002/7/12 15:21:05
你是说用budapi来查找文件,我不太会用.我学的还很浅你这么说我一点也没办法作.



酷狗

职务:版主
等级:2
金币:10.0
发贴:610
注册:2000/9/16 9:26:36
#42002/7/12 17:16:48
先用Result = baSysFolder( "system32") 来获得d3d8.dll的目录,再执行bool= baFileExists( Result &"d3d8.dll" ) ,用if 判断bool的真假就好了:),试过了



灰色幽灵

职务:普通成员
等级:1
金币:0.0
发贴:114
注册:2001/10/11 10:07:05
#52002/7/12 17:28:33
谢谢,不知道可不可以把你的测试发给我看看,
guyunteng@modern.org

编辑历史:[这消息被灰色幽灵编辑过(编辑时间2002-07-12 17:31:56)]


酷狗

职务:版主
等级:2
金币:10.0
发贴:610
注册:2000/9/16 9:26:36
#62002/7/15 8:53:44
我在家中想至一个问题这种方法,如果谁装了DX9就有问题了,所以改一下,找ddraw.dll,然后put baFileVersion( Result &"ddraw.dll" ),比较一下VER号就可以了,但如果以后DX的安装结构变了就不知道行不行了,以试一下吧!
Result = baSysFolder( "system32")
if baFileExists( Result &"ddraw.dll" ) then
ver = baFileVersion( Result &"ddraw.dll" )
.....下来是一些比较字符串的指令.......
if ver < (许要的ver) then
go movie "install"
end if
end if

编辑历史:[这消息被szcooldog编辑过(编辑时间2002-07-15 12:59:10)]


灰色幽灵

职务:普通成员
等级:1
金币:0.0
发贴:114
注册:2001/10/11 10:07:05
#72002/7/15 10:03:01
谢谢你,我去试试看,



灰色幽灵

职务:普通成员
等级:1
金币:0.0
发贴:114
注册:2001/10/11 10:07:05
#82002/7/15 10:40:31
szcooldog兄,不行呀,第一句就提示出错
handler not defined

#basysfolder

是需要加什么吗?用不用budapi或其他Xtras呀



吃鱼专家

职务:普通成员
等级:6
金币:11.0
发贴:5312
注册:2004/1/17 13:07:16
#92002/7/15 11:23:28
那别人用DX9的就完了



酷狗

职务:版主
等级:2
金币:10.0
发贴:610
注册:2000/9/16 9:26:36
#102002/7/15 13:00:35
Result = baSysFolder( "system32")
if baFileExists( Result &"ddraw.dll" ) then
ver = baFileVersion( Result &"ddraw.dll" )
.....下来是一些比较字符串的指令.......
if ver < (许要的ver) then
go movie "install"
end if
end if
可以对付DX9呀,怎么会完了呢,你试呀
要buddyAPI3.40 XTRA,那些函数全不是XTRA

编辑历史:[这消息被szcooldog编辑过(编辑时间2002-07-15 13:01:38)]


灰色幽灵

职务:普通成员
等级:1
金币:0.0
发贴:114
注册:2001/10/11 10:07:05
#112002/7/15 14:47:33
黑黑,看来我还是要学着用buddyAPI呀,功能真多,谢谢szcooldog了.



threem

职务:普通成员
等级:2
金币:1.0
发贴:338
注册:2001/6/14 13:52:15
#122002/7/17 22:10:53
不能精确判断用户的版本,但是检测是否安装directx8 也可以这样做:

on DirectXInstallP
pp=new(xtra "activex")
if ActiveXControlQuery("{E7FF1300-96A5-11D3-AC85-00C04FC2C602}")<>-1 then
alert "PLease install DirectX 81"
end if
end



灰色幽灵

职务:普通成员
等级:1
金币:0.0
发贴:114
注册:2001/10/11 10:07:05
#132002/9/24 9:54:25
szcooldog大哥,你的方法似乎只是判断的ddraw.dll版本,
Result = baSysFolder( "system32")
if baFileExists( Result &"ddraw.dll" ) then
ver = baFileVersion( Result &"ddraw.dll" )
alert ""& ver
end if
我在几台机器上试过取出的值似乎都不对呀



疯狂的少年

职务:普通成员
等级:1
金币:0.0
发贴:106
注册:2002/4/27 8:39:38
#142002/9/24 12:45:17
通过DirectOS xtra插件便可得到DirectX version
on GetDirectXVersion
vDirectX = dosReadReg ("HKEY_LOCAL_MACHINE", "Software\Microsoft\DirectX", "Version")
if (vDirectX = "") then
if (dosGetLastError()) then
put "Can't obtain the DirectX version. DirectX may not be installed, error # "&dosGetLastError()
else
put "DirectX version information is not stored as expected."
end if
exit
end if
set the itemDelimiter to "."
put "DirectX version is " & item 2 of vDirectX & "." & item 3 of vDirectX
end



灰色幽灵

职务:普通成员
等级:1
金币:0.0
发贴:114
注册:2001/10/11 10:07:05
#152002/9/24 13:40:27
谢谢疯狂的少年,我不想使用太多的xtra,DirectOS功能不十分强, 而buddyAPI我在其它的位置上还有用到