Visual Studio 2008(c#)开发ActiveX控件及制作CAB包总结(4)
2011-05-27 15:57
453 查看
这一节将测试ActiveX控件在新版操作系统上运行的问题,并提出解决的办法。主要是ActiveX程序兼容性和CAB文件的安装问题。我在VitualPC上安装了Windows7,并且使用IE8浏览器。
1、测试环境:Windows7+IE8
2、修改之前,直接访问页面看看,发现出错了:
出错行:document.HelloBossma.SetTime(vYear+“-”+vMon+“-”+vDay+””+vHour+“:”+vMin+“:”+vSec)
然后到控制面中没有找到安装的ActiveX程序,结合出错行,大致得出结论:ActiveX没有安装成功!
3、修改文件
install.inf:
新加[Deployment],关于这个项目看:http://msdn.microsoft.com/zh-cn/library/dd433049(en-us,VS.85).aspx
InstallScope=machine我这里只能用这个,改成user无法安装成功,原因未知。
另外在vista以后的版本只能执行cab中的文件了,所以msiexec转移到了bat中执行,添加一个bat文件。
run.bat:
4、制作CAB包
重新制作CAB包,添加一个run.bat:
5、在浏览器安装
输入网址,提示安装,然后出现命令运行框,然后消失。
如果安装成功,会出现控件界面。
6、一个兼容性问题
这时候会发现,浏览器左下角有javascript错误,同时点击CallJavascript发生异常。
无法将类型为“Systerm._ComObject”的COM对象强制转换为类类型“mshtml.HTMLWindow2Class”。
在XP、WindowsServer2003中都没有问题,Windows7上出现问题,可能是权限设置问题。
按照上边的提示,找到出现问题的地方:
Default.aspx:
HelloBossmaActiveX.cs
按照提示,我们可以把它转换为接口试试,在网上找到了HTMLWindow2Class的定义,
经过测试,IHTMLWindow2定义了execScript,所以修改SetHtml为:
如果你需要其它的方法,换换接口试试。
重新编译,重新安装控件,OK了!
转自:http://blog.bossma.cn/dotnet/visual-studio-2008-csharp-activex-summary-4/
1、测试环境:Windows7+IE8
2、修改之前,直接访问页面看看,发现出错了:
出错行:document.HelloBossma.SetTime(vYear+“-”+vMon+“-”+vDay+””+vHour+“:”+vMin+“:”+vSec)
然后到控制面中没有找到安装的ActiveX程序,结合出错行,大致得出结论:ActiveX没有安装成功!
3、修改文件
install.inf:
[version] |
signature="$CHICAGO$" |
AdvancedINF=2.0 |
[SetupHooks] |
hook1=hook1 |
[Deployment] |
InstallScope=machine |
[hook1] |
run=%EXTRACT_DIR%/run.bat |
InstallScope=machine我这里只能用这个,改成user无法安装成功,原因未知。
另外在vista以后的版本只能执行cab中的文件了,所以msiexec转移到了bat中执行,添加一个bat文件。
run.bat:
setCURDIR=%cd% |
msiexec.exe/i"%CURDIR%/HelloBossmaSetup.msi"/qn |
重新制作CAB包,添加一个run.bat:
cabarcnHelloBossma.cabHelloBossmaSetup.msiinstall.infrun.bat |
输入网址,提示安装,然后出现命令运行框,然后消失。
如果安装成功,会出现控件界面。
6、一个兼容性问题
这时候会发现,浏览器左下角有javascript错误,同时点击CallJavascript发生异常。
无法将类型为“Systerm._ComObject”的COM对象强制转换为类类型“mshtml.HTMLWindow2Class”。
在XP、WindowsServer2003中都没有问题,Windows7上出现问题,可能是权限设置问题。
按照上边的提示,找到出现问题的地方:
Default.aspx:
window.onload= function (){ |
document.HelloBossma.SetHtml( this ); |
}; |
publicvoidSetHtml(objectobj) |
{ |
//问题出在这里,类型转换的问题 |
html=(mshtml.HTMLWindow2Class)obj; |
} |
public class HTMLWindow2Class:System.__ComObject,MSHTML.IHTMLFramesCollection2,MSHTML.IHTMLWindow2,mshtml.IHTMLWindow3,mshtml.IHTMLWindow4,mshtml.DispHTMLWindow2,mshtml.HTMLWindowEvents_Event,mshtml.HTMLWindowEvents2_Event,mshtml.HTMLWindow2 |
{ |
} |
privatemshtml.IHTMLWindow2html= null ; |
publicvoidSetHtml(objectobj) |
{ |
html=objasmshtml.IHTMLWindow2; |
} |
重新编译,重新安装控件,OK了!
转自:
相关文章推荐
- Visual Studio 2008(c#)开发ActiveX控件及制作CAB包总结(1)
- Visual Studio 2008(c#)开发ActiveX控件及制作CAB包总结(2)
- Visual Studio 2008(c#)开发ActiveX控件及制作CAB包总结(3)
- Visual Studio 2008(c#)开发ActiveX控件及制作CAB包总结
- Visual Studio 2008(c#)开发ActiveX控件及制作CAB包总结
- C#开发ActiveX控件及制作CAB包
- 使用C#开发ActiveX控件 控件开发、制作CAB包、签名、部署
- C#开发ActiveX控件及制作CAB包
- C#开发ActiveX控件及制作CAB包(转)
- C#开发ActiveX控件及制作CAB包
- C#开发ActiveX控件及制作CAB包
- C#开发ActiveX控件及制作CAB包
- C#开发ActiveX控件及制作CAB包(转)
- C#开发ActiveX控件及制作CAB包
- C#开发ActiveX控件及制作CAB包
- SharpDevelop 类似visual studio的一个C#制作的开源,.net开发工具
- C#开发ActiveX控件及制作CAB包
- C#开发ActiveX控件及制作CAB包
- visual studio开发C#笔记03——多线程总结1
- Visual Studio 2008 可扩展性开发(九):总结篇