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位的,因此就有了:
如果没有安装,或者版本过低,我们当然要求用户重新安装最新的版本,如果用户联网了,那么就应该就要使用ie直接跳转到Adobe的官网获取新版的Adobe Flash Player ActiveX, 但有些情况用户无法连接网络(需要使用程序提供的原安装档),而且用户之前可能安装过最新版的Adobe Flash Player ActiveX, 但后来卸载过了,这时候,你会发现,您无法再安装旧的版本(感觉Adobe真的有点霸道,有点不爽吧),所以程序中需要在执行安装之前,必须做点事,那就是把标志新版的注册表键值删除掉:
事实上,Adobe把SafeVersions/10.0这个键值改为最新的,当安装时候,检测到比它低的,它就不允许安装,其实也可以将他改低就可以安装了,但是没有必要,直接将它删除了吧,一了百了。
不知是否还有更好的办法....
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这个键值改为最新的,当安装时候,检测到比它低的,它就不允许安装,其实也可以将他改低就可以安装了,但是没有必要,直接将它删除了吧,一了百了。
不知是否还有更好的办法....
相关文章推荐
- 给初学者:用VB写外挂 ———— 检测到HP小于保护值怎么办:关于发送按键
- 给初学者:用VB写外挂 ———— 检测到HP小于保护值怎么办:关于发送按键
- 关于flex编程中ActionScript3.0中的Object和Dictionary的异同
- 关于举办北京Flex开发者活动的民意调查
- 整理BOM时写的关于拆分单元格的VB代码
- flex j2EE 例子 和BlazeDs 关于MessageBroker,endpoints 和 channel
- 关于EMGU CV的那些事——3.不同角点检测算法比较
- 关于Harris角点检测的实现
- 前20个关于FLEX技术、源码、实例、技巧的网站.
- 关于目标检测和目标跟踪的一个小疑惑
- 关于OpenCv图像变换与基本图形检测
- 关于VB.net代码转化为C#代码出现的一些问题
- 关于Flex 初始化的research
- 关于FLEX中找不到目标对象或通道未定义错误
- flex关于跨域访问会引起安全沙箱问题,下面是在网上找到的解决安全沙箱问题的方法
- 关于Magick++ 在readImage过程中异常抛出检测 Magick::readImage return exception
- 关于微软的VB和C#:为何Basic需要存在,为何VB如此像C#,为何两者不合并等
- Flex学习笔记——关于Flex里的事件
- 关于flex布局的小白入门
- 关于在VB中动态加载控件的方法