您的位置:首页 > 编程语言 > VB

vb+Flex的关于FlashPlayer的检测

2010-11-03 16:14 204 查看
应该很少见到使用vb+flex这样的方式开发的项目吧,自己就曾经遇过这样的一个项目,其实更好的应该是c++ + flex, vb,c++这些作为Flex的外层,它的工作就是跟系统交互并为Flex提供服务,而这样结合,比起air, 性能应该更好,我不明白air还有什么用武之地,至少我不会再用它了——|||...

vb+flex,在vb中,要使用到ActiveX控件ShockwaveFlash

回过头先说FlashPlyer的两个内核版本:

Adobe Flash Player ActiveX: ie ActiveX控件

Adobe Flash Player plugin: 非ie的插件,例如firefox

Adobe Flash Player ActiveX是再熟悉不过的了,并且是非常的普及的了,几乎所有需要运行swf都会安装它,也只安装了它, vb才能正常使用ShockwaveFlash,因为它会注册该控件。

基于此,vb+flex,如何去检测用户的电脑是否可以正常使用软件(是否安装了Adobe Flash Player ActiveX),我们自然想到了要去检测注册表,而现在的系统有32位和64位的,因此就有了:

Dim K As String
'首先检测32位的键值
K = GetRegString(HKEY_LOCAL_MACHINE, "SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/Adobe Flash Player ActiveX", "DisplayVersion")
K = Trim(K)
If (K = "") Then
'再尝试检测64位的键值
K = GetRegString(HKEY_LOCAL_MACHINE, "SOFTWARE/Wow6432Node/Microsoft/Windows/CurrentVersion/Uninstall/Adobe Flash Player ActiveX", "DisplayVersion")
K = Trim(K)
If (K = "") Then
Call err.Raise(-1, , "flash cannot found")
Else
K = GetVersionNum(K)      'GetVersionNum用户获取版本好的Interger数字
End If
Else
K = GetVersionNum(K)
End If

ver = CInt(K)

If ver < 10 Then
GoTo xx             'xx 用于处理当版本好小于10的情况
End If


如果没有安装,或者版本过低,我们当然要求用户重新安装最新的版本,如果用户联网了,那么就应该就要使用ie直接跳转到Adobe的官网获取新版的Adobe Flash Player ActiveX, 但有些情况用户无法连接网络(需要使用程序提供的原安装档),而且用户之前可能安装过最新版的Adobe Flash Player ActiveX, 但后来卸载过了,这时候,你会发现,您无法再安装旧的版本(感觉Adobe真的有点霸道,有点不爽吧),所以程序中需要在执行安装之前,必须做点事,那就是把标志新版的注册表键值删除掉:

Call DeleteNewestFlashPlayer
代码如:
DeleteRegeditValue(HKEY_LOCAL_MACHINE, "SOFTWARE/Macromedia/FlashPlayer/SafeVersions", "10.0")
DeleteRegeditValue(HKEY_LOCAL_MACHINE, "SOFTWARE/Wow6432Node/Macromedia/FlashPlayer/SafeVersions", "10.0")
当然,你可能还要顾及到以后的11,12,13,14....
删除完之后:
If MsgBox("系統的Adobe Flash版本小於10,請轉到網址""http://www.adobe.com/go/getflashplayer""獲取最新的版本。", vbOKCancel, "電子書所需控件太舊") = VbMsgBoxResult.vbOK Then
ShellExecute 0, "open", "iexplore.exe", "http://www.adobe.com/go/getflashplayer", "", 1
End If


事实上,Adobe把SafeVersions/10.0这个键值改为最新的,当安装时候,检测到比它低的,它就不允许安装,其实也可以将他改低就可以安装了,但是没有必要,直接将它删除了吧,一了百了。

不知是否还有更好的办法....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: