﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-色彩空间-文章分类-ASP/Visual Basic </title><link>http://www.blogjava.net/aiaiwoo/category/46744.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 26 Apr 2011 20:53:35 GMT</lastBuildDate><pubDate>Tue, 26 Apr 2011 20:53:35 GMT</pubDate><ttl>60</ttl><item><title>VB6 与 AS2之间的数据通讯,AS3类同</title><link>http://www.blogjava.net/aiaiwoo/articles/348576.html</link><dc:creator>aiaiwoo</dc:creator><author>aiaiwoo</author><pubDate>Tue, 19 Apr 2011 07:55:00 GMT</pubDate><guid>http://www.blogjava.net/aiaiwoo/articles/348576.html</guid><wfw:comment>http://www.blogjava.net/aiaiwoo/comments/348576.html</wfw:comment><comments>http://www.blogjava.net/aiaiwoo/articles/348576.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/aiaiwoo/comments/commentRss/348576.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/aiaiwoo/services/trackbacks/348576.html</trackback:ping><description><![CDATA[<span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">2008年的时候我在百度知道上已经回答过，你亦说你看过这帖了，但你说还不明白 那我就详细地说一下吧</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><a href="http://zhidao.baidu.com/question/43875593.html?si=1" target="_blank" style="word-wrap: break-word; color: #000080; text-decoration: none; line-height: normal; ">http://zhidao.baidu.com/question/43875593.html?si=1</a></span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">flash发送数据到容器&nbsp; &nbsp; javascript(面向网页)中一般推荐使用&nbsp; &nbsp;flash.external.ExternalInterface.call</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">但在VB(或其它的语言中)，一般建议使用fscommand(command, args)这种方式来通讯 ，</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">在VB端（其它就是基于shockwaveFlash控件的内部事件 其它VC Delphi类同）</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">有一个这样的针对swf 控件的事件处理子过程</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">&nbsp;</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">Private Sub ShockwaveFlash1_FSCommand(ByVal command As String, ByVal args As String)</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">'具体看看形参就知道 如何跟&nbsp;&nbsp;flash中的 fscommand函数格式对应了</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">&nbsp;</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">&nbsp; &nbsp; Select Case command</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Case "play"</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Case "stop"</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">&nbsp; &nbsp;</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">&nbsp;</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">&nbsp; &nbsp; End Select</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">End Sub</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">flash -&gt; VB的通讯 就像上面这样</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">&nbsp;</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">通过 select case 来判断分支多个command的操作</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">而重要的是 VB -&gt; flash方面的使用</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">一般的SetVariable这种方法&nbsp;&nbsp;或者 使用 flashVars来传入参数，都是基于很被动的方式动作，即设置了值 ，如果flash方面不主动检测的话，就不会引发其它相关的动作</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">所以一般推荐使用基于事件处理的&nbsp;&nbsp;callFunction方式</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">swf控件.callFunction&nbsp;&nbsp;xml格式数据</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">xml格式数据的构成是</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">&lt;invoke name="flash里面的侦听名" returntype="xml"&gt;&lt;arguments&gt;&lt;string&gt;数据&lt;/string&gt;&lt;/arguments&gt;&lt;/invoke&gt;</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">要发送的数据需要使用 &lt;数据类型&gt;&lt;/数据类型&gt; 包裹</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">相关的类型说明详见</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">&nbsp;</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><a href="http://www.cnblogs.com/maconel/archive/2010/09/29/1838743.html" target="_blank" style="word-wrap: break-word; color: #000080; text-decoration: none; line-height: normal; ">http://www.cnblogs.com/maconel/archive/2010/09/29/1838743.html&nbsp;</a></span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">但一般使用默认的String就足够了 包括数值数据也可以用它发送</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">这是最基本的数据格式&nbsp;&nbsp;即可以这样写</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">swf控件.callFunction&nbsp;&nbsp;&lt;invoke name=""flash里面的侦听名""returntype=""xml""&gt;&lt;arguments&gt;&lt;string&gt;数据&lt;/string&gt;&lt;/arguments&gt;&lt;/invoke&gt;</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">'&lt;string&gt;数据&lt;/string&gt;&nbsp;&nbsp;这里设置要发送的字符数据</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">而flash方面要写的as代码</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">as2:&nbsp;&nbsp;</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">flash.external.ExternalInterface.addCallback("flash里面的侦听名",this, funcCall);</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">function funcCall(str1:String):Void{</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">&nbsp; &nbsp;&nbsp;&nbsp;//这里的str1对应第一个参数&nbsp;&nbsp;就是 数据</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">&nbsp; &nbsp;//如果有多个参数 依次在这里形参声明</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">&nbsp; &nbsp;//传入的数据可以在flash里任意处理</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">}</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">as3:&nbsp;&nbsp;</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">//as2和as3中的 ExternalInterface对象的&nbsp;&nbsp;addCallback函数原型有所不同&nbsp; &nbsp;这里不用添加this指向</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">flash.external.ExternalInterface.addCallback("flash里面的侦听名", funcCall);</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">function funcCall(str1:String):void{</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">&nbsp; &nbsp;&nbsp;&nbsp;//这里的str1对应第一个参数&nbsp;&nbsp;就是 数据</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">&nbsp; &nbsp;//如果有多个参数 依次在这里形参声明</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">}</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><br style="word-wrap: break-word; line-height: normal; " />
</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">这里为了方便&nbsp;&nbsp;整理出一个vb端的发送代码 直接调用封装好的方法就可以发送数据</span>
<div class="blockcode" style="word-wrap: break-word; line-height: normal; font-size: 12px; margin-top: 10px; margin-right: 20px; margin-bottom: 10px; margin-left: 20px; border-left-color: #ccccd4; border-width: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #f2f3f7; overflow-x: hidden; overflow-y: hidden; border-collapse: collapse; font-family: Tahoma, Verdana; "><em style="word-wrap: break-word; font-style: normal; font-weight: normal; line-height: 1.3em; float: right; padding-right: 10px; padding-bottom: 0px; padding-left: 0px; color: #000000; font-size: 12px; cursor: pointer; padding-top: 5px; ">复制内容到剪贴板</em>
<h5 style="word-wrap: break-word; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 5px; font-size: 1em; line-height: 26px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-color: initial; border-top-color: #fbfbf9; border-right-color: #fbfbf9; border-bottom-color: #ccccd4; border-left-color: #fbfbf9; color: #000000; ">代码:</h5>
<code id="code0" style="word-wrap: break-word; line-height: 1.6em; margin-top: 1em; margin-right: 1em; margin-bottom: 1em; margin-left: 3em; font: normal normal normal 14px/1.4em 'Courier New', Courier, monospace; display: block; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; ">Private Sub Form_Load()<br style="word-wrap: break-word; line-height: normal; " />
ShockwaveFlash1.Movie = App.Path &amp; "\as2.swf"<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp;'下面这是必须的格式&nbsp; &nbsp;使用 getStr函数为传入的字符串两边加上&lt;String&gt;&lt;/String&gt;<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp;'getCallFuncStr函数为已经格式好的 参数对添加上头尾的xml格式声明<br style="word-wrap: break-word; line-height: normal; " />
&nbsp;&nbsp;'CWScallFunc&nbsp;&nbsp;重构调用swf控件的方法 派发数据<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp; Dim str As String<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp; str = getStr("strUsername") &amp; getStr("strUserid") '这里传入两个参数<br style="word-wrap: break-word; line-height: normal; " />
&nbsp;&nbsp;CWScallFunc ShockwaveFlash1, getCallFuncStr("UserData", str)<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp;<br style="word-wrap: break-word; line-height: normal; " />
End Sub<br style="word-wrap: break-word; line-height: normal; " />
Private Sub ShockwaveFlash1_FSCommand(ByVal command As String, ByVal args As String)<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp; Select Case command<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Case "trace"<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MsgBox args<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp; End Select<br style="word-wrap: break-word; line-height: normal; " />
End Sub<br style="word-wrap: break-word; line-height: normal; " />
Private Function getStr$(v$)<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp; '时间关系 这里只设置默认的string 如有更多数据类型需要 可参看http://www.cnblogs.com/maconel/archive/2010/09/29/1838743.html<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp;&nbsp;<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp; '自行扩展<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp; getStr = IIf(v &lt;&gt; "", "&lt;string&gt;" &amp; v &amp; "&lt;/string&gt;", "")<br style="word-wrap: break-word; line-height: normal; " />
End Function<br style="word-wrap: break-word; line-height: normal; " />
Private Function getCallFuncStr$(FuncName$, Optional v$ = "")<br style="word-wrap: break-word; line-height: normal; " />
'=======此参数&nbsp;&nbsp;FuncName$需与flash端侦听名同步<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp; Dim strXmlop, strXmled As String<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp; strXmlop = "&lt;invoke name=""" &amp; FuncName &amp; """returntype=""xml""&gt;&lt;arguments&gt;" '定义XML开始语句 name 后定义调用函数名<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp; strXmled = "&lt;/arguments&gt;&lt;/invoke&gt;"<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp;getCallFuncStr = strXmlop &amp; v &amp; strXmled<br style="word-wrap: break-word; line-height: normal; " />
End Function<br style="word-wrap: break-word; line-height: normal; " />
Private Sub CWScallFunc(obj As ShockwaveFlash, v$)<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp; '重构<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp; obj.CallFunction v<br style="word-wrap: break-word; line-height: normal; " />
&nbsp; &nbsp; '如果报 callfunction IShockwaveFlash 失败 基本就没救了 flash10的问题<br style="word-wrap: break-word; line-height: normal; " />
End Sub</code></div>
<span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">[</span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; "><em style="word-wrap: break-word; line-height: normal; ">&nbsp;本帖最后由 HSZZLZL 于 2011-1-11 11:43 编辑&nbsp;</em></span><span  style="border-collapse: collapse; font-family: Tahoma, Verdana; font-size: 14px; line-height: 22px; ">]</span>
<img src ="http://www.blogjava.net/aiaiwoo/aggbug/348576.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/aiaiwoo/" target="_blank">aiaiwoo</a> 2011-04-19 15:55 <a href="http://www.blogjava.net/aiaiwoo/articles/348576.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VB6中如何使用C#开发的WebService进行开发</title><link>http://www.blogjava.net/aiaiwoo/articles/337248.html</link><dc:creator>aiaiwoo</dc:creator><author>aiaiwoo</author><pubDate>Thu, 04 Nov 2010 08:46:00 GMT</pubDate><guid>http://www.blogjava.net/aiaiwoo/articles/337248.html</guid><wfw:comment>http://www.blogjava.net/aiaiwoo/comments/337248.html</wfw:comment><comments>http://www.blogjava.net/aiaiwoo/articles/337248.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/aiaiwoo/comments/commentRss/337248.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/aiaiwoo/services/trackbacks/337248.html</trackback:ping><description><![CDATA[<div>&nbsp;</div>
<div>
<p style="text-justify: inter-ideograph; margin: 0cm 0cm 0pt; text-align: justify" align="center"><font face="黑体"><font size="6">VB6中如何使用C#开发的WebService进行开发</font></font></p>
<p style="margin: 0cm 0cm 0pt"><font size="6">&nbsp;<font face="黑体">伍华聪(<a href="http://wuhuacong.com.cn/">http://wuhuacong.com.cn/</a>)</font></font></p>
<h1 style="margin: 18pt 0cm 12pt 27pt"><font face="Arial" size="5">1.</font><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 黑体"><font size="5">问题描述</font></span></h1>
<p style="margin: 6pt 0cm 6pt 63pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: 宋体">在项目开发过程中，我们需要集成已有的权限管理系统，作为它本身的权限控制的模块。但是已有的权限管理系统是采用</span>C#<span style="font-family: 宋体">开发的，提供了</span>WebService<span style="font-family: 宋体">的权限访问接口，而开发项目是使用</span>VB6<span style="font-family: 宋体">开发的；两者可以互相沟通么？如果可以，如何才能实行在</span>VB6<span style="font-family: 宋体">中获取</span>WebService<span style="font-family: 宋体">中的信息呢？</span></p>
<h1 style="margin: 18pt 0cm 12pt 27pt"><font face="Arial" size="5">2.</font><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 黑体"><font size="5">解决方法</font></span></h1>
<h2 style="margin: 6pt 0cm 6pt 63pt"><font face="Arial">2.1.</font><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 黑体">使用</span><span style="font-size: 15.5pt"><font face="Arial">Microsoft Office XP Web Services Toolkit 2.0</font></span><span style="font-size: 15.5pt; font-family: 黑体">创建代理类</span></h2>
<p style="margin: 6pt 0cm 6pt 63pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Microsoft Office XP Web Services Toolkit 2.0<span style="font-family: 宋体">（下载地址：</span><a href="http://www.microsoft.com/downloads/details.aspx?familyid=4922060F-002A-4F5B-AF74-978F2CD6C798&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?familyid=4922060F-002A-4F5B-AF74-978F2CD6C798&amp;displaylang=en</a> <span style="font-family: 宋体">），该工具提供给开发者在</span>VBA<span style="font-family: 宋体">中快速访问和使用</span>WebService<span style="font-family: 宋体">的功能，使用几乎和在</span>VS.NET<span style="font-family: 宋体">中使用</span>WebServcie<span style="font-family: 宋体">一样方便，真是很爽。</span></p>
<p style="margin: 6pt 0cm 6pt 63pt; text-indent: 21pt; text-align: center" align="center"><img height="385" alt="Snap1.jpg" src="http://images.cnblogs.com/cnblogs_com/wuhuacong/VB6WebService/Snap1.jpg" width="499" border="0" /></p>
<p style="margin: 6pt 0cm 6pt 63pt; text-indent: 21pt; text-align: center" align="center">Office XP Web Services Toolkit 2.0<span style="font-family: 宋体">安装界面</span></p>
<p style="margin: 6pt 0cm 6pt 63pt; text-indent: 21pt"><span style="font-family: 宋体">安装完</span>Office XP Web Services Toolkit 2.0<span style="font-family: 宋体">之后，打开你的</span>Office2003<span style="font-family: 宋体">套件中任一个，按快捷键（</span>Alt + F11<span style="font-family: 宋体">）或者菜单【工具】【宏】【</span>VisualBasic<span style="font-family: 宋体">编辑器】菜单进入，如下所示：<br />
</span></p>
<p style="margin: 6pt 0cm 6pt 63pt; text-indent: 21pt; text-align: center" align="center"><span style="font-family: 宋体"><img height="419" alt="Snap2.jpg" src="http://images.cnblogs.com/cnblogs_com/wuhuacong/VB6WebService/Snap2.jpg" width="495" border="0" /><br />
进入</span>VBA<span style="font-family: 宋体">的</span>Office<span style="font-family: 宋体">工具菜单</span></p>
<p style="margin: 6pt 0cm 6pt 63pt; text-indent: 21pt"><span style="font-family: 宋体">在弹出的</span>VBA<span style="font-family: 宋体">程序窗口中，选择【工具】【</span>Web<span style="font-family: 宋体">引用】的菜单项，如下所示。<br />
</span></p>
<p style="margin: 6pt 0cm 6pt 63pt; text-indent: 21pt" align="center"><span style="font-family: 宋体"><img height="188" alt="Snap3.jpg" src="http://images.cnblogs.com/cnblogs_com/wuhuacong/VB6WebService/Snap3.jpg" width="176" border="0" /></p>
<p style="margin: 6pt 0cm 6pt 63pt; text-indent: 21pt"><br />
在弹出的对话框中选择&#8220;</span>Web<span style="font-family: 宋体">服务</span>URL<span style="font-family: 宋体">&#8221;项，输入</span>WebService<span style="font-family: 宋体">的</span>URL<span style="font-family: 宋体">，如：</span><a href="http://localhost/HWSecurity/WebServices/Security.asmx">http://localhost/HWSecurity/WebServices/Security.asmx</a> <span style="font-family: 宋体">，点击搜索，则在对话框的右上角列出</span>WebService<span style="font-family: 宋体">的方法，选择所有的方法，单击按钮&#8220;添加&#8221;即可在</span>VBA<span style="font-family: 宋体">代码中加入了</span>WebService<span style="font-family: 宋体">的代理类等相应的代码，如下所示。</span></p>
<p style="margin: 6pt 0cm; text-indent: 30pt; text-align: center" align="center"><img height="439" alt="Snap5.jpg" src="http://images.cnblogs.com/cnblogs_com/wuhuacong/VB6WebService/Snap5.jpg" width="545" border="0" /><br />
<br />
VBA<span style="font-family: 宋体">中添加</span>WebService<span style="font-family: 宋体">引用的对话框</span></p>
<p style="margin: 6pt 0cm 6pt 63pt; text-indent: 21pt"><span style="font-family: 宋体">生成的代码如下所示，其中包含了</span>WebService<span style="font-family: 宋体">对应的代理类和相关的实体类，还有一个工厂类。<br />
</span></p>
<p style="margin: 6pt 0cm 6pt 63pt; text-indent: 21pt" align="center"><img height="555" alt="Snap6.jpg" src="http://images.cnblogs.com/cnblogs_com/wuhuacong/VB6WebService/Snap6.jpg" width="707" border="0" /><br />
WebService<span style="font-family: 宋体">生成的</span>VBA<span style="font-family: 宋体">代理类、实体类等代码文件</span></p>
<h2 style="margin: 6pt 0cm 6pt 63pt"><font face="Arial">2.2.</font><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 黑体">如何使用</span><font face="Arial">VBA</font><span style="font-family: 黑体">生成的代理类和实体类等</span></h2>
<p style="margin: 6pt 0cm 6pt 63pt; text-indent: 24pt"><span style="font-family: 宋体">在代码文件上使用右键菜单导出生成的代码文件，加入你的</span>VB6<span style="font-family: 宋体">工程文件中，如下所示。</span></p>
<p style="margin: 6pt 0cm 6pt 63pt; text-indent: 24pt; text-align: center" align="center"><span style="font-family: 宋体"><img height="269" alt="Snap7.jpg" src="http://images.cnblogs.com/cnblogs_com/wuhuacong/VB6WebService/Snap7.jpg" width="376" border="0" /><br />
<br />
导出</span>VBA<span style="font-family: 宋体">代码文件</span></p>
<p style="margin: 6pt 0cm 6pt 63pt; text-indent: 24pt"><span style="font-family: 宋体">在</span>VB6<span style="font-family: 宋体">工程的引用中加入</span>MSSOAP30.DLL<span style="font-family: 宋体">和</span>MSXML3.DLL<span style="font-family: 宋体">这两个引用的</span>DLL<span style="font-family: 宋体">（请先安装</span>SOAP Toolkit 3.0<span style="font-family: 宋体">，地址：</span><a href="http://www.microsoft.com/downloads/details.aspx?familyid=c943c0dd-ceec-4088-9753-86f052ec8450&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?familyid=c943c0dd-ceec-4088-9753-86f052ec8450&amp;displaylang=en</a> <span style="font-family: 宋体">），如图所示：<br />
</span></p>
<p style="margin: 6pt 0cm 6pt 63pt; text-indent: 24pt"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img height="333" alt="Snap8.jpg" src="http://images.cnblogs.com/cnblogs_com/wuhuacong/VB6WebService/Snap8.jpg" width="446" border="0" /><br />
&nbsp;&nbsp;&nbsp;在代码中使用</span>WebService<span style="font-family: 宋体">的代理类的时候，会有智能提示的，使用起来非常方便，如下所示，足以看到在代码使用</span>WebService<span style="font-family: 宋体">代理类获取数据是多么的方便。<br />
</span></p>
<p style="margin: 6pt 0cm 6pt 63pt; text-indent: 24pt"><span style="font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img height="180" alt="Snap9.jpg" src="http://images.cnblogs.com/cnblogs_com/wuhuacong/VB6WebService/Snap9.jpg" width="368" border="0" /><br />
使用</span>WebService<span style="font-family: 宋体">代理类获取返回字符串方法和实体类数组代码示例如下所示。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; <img height="188" alt="Snap10.jpg" src="http://images.cnblogs.com/cnblogs_com/wuhuacong/VB6WebService/Snap10.jpg" width="487" border="0" /></span></p>
</div>
<img src ="http://www.blogjava.net/aiaiwoo/aggbug/337248.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/aiaiwoo/" target="_blank">aiaiwoo</a> 2010-11-04 16:46 <a href="http://www.blogjava.net/aiaiwoo/articles/337248.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASP与ActiveX控件交互实战</title><link>http://www.blogjava.net/aiaiwoo/articles/336756.html</link><dc:creator>aiaiwoo</dc:creator><author>aiaiwoo</author><pubDate>Tue, 02 Nov 2010 01:11:00 GMT</pubDate><guid>http://www.blogjava.net/aiaiwoo/articles/336756.html</guid><wfw:comment>http://www.blogjava.net/aiaiwoo/comments/336756.html</wfw:comment><comments>http://www.blogjava.net/aiaiwoo/articles/336756.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/aiaiwoo/comments/commentRss/336756.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/aiaiwoo/services/trackbacks/336756.html</trackback:ping><description><![CDATA[ActiveX控件运行在客户端。我们可以获得客户端的一些信息，如IC卡的信息,客户端的验证等等。但是ActiveX控件也有许多缺点：客户端的部署很困难，如客户端不能正确下载，下载了以后不能正确执行，下载的时候需要设置IE的安全级别等等。 <br />
<br />
更多的时候，我都在使用COM组件来扩展ASP的功能。准确地说，是服务端运行的Activex Dll组件。使用Server.CreateObject(&#8220;工程名.类名&#8221;)即可完成对组件的调用。这种方式问题很少,只要组件中以PUBLIC对外暴露方法既可。但是，有时候我们必须使用ACTIVEX 控件(*.OCX)嵌入到网页中执行来获取客户端的信息。这就有了许许多多的一些问题。 <br />
<br />
这是我们需要解决的N个问题(从简单到难) <br />
<br />
1． 如何从服务端获取数据，传递到ActiveX控件中。 <br />
<br />
1） 初始化时使用参数绑定 <br />
<br />
2） 运行时得到数据 <br />
<br />
2． ActiveX控件得到客户端的信息，如何传递到服务端。 <br />
<br />
3． 安全性 <br />
<br />
1） 数字签名 <br />
<br />
2） 使用IOBJSAFE接口 <br />
<br />
好了，我们开始实例学习。 <br />
<br />
这个功能演示了如何制作一个简单的控件,并嵌入网页中执行。 工作环境:WINXP+VB6+IE6 <br />
<br />
我的IE安全设置为安全级别-中。所有的Activex选项设为启用。 <br />
<br />
打开vb6,新建ActiveX控件工程。 <br />
<br />
工程名:fOcx，用户控件名:UC1 <br />
<br />
为了方便，我们使用ActiveX控件接口向导&#8230;,菜单-&gt;外接程序-&gt;外接程序管理器-&gt;VB 6 ActiveX控件接口向导。确定即可。 <br />
<br />
打开ActiveX控件接口向导，下一步，对于可用名称和选定名称我们默认下一步，新建自定义成员，GetInfo类型:属性，下一步，共有方法中选择我们刚才添加的GetInfo,映射到控件选择TxtInfo,成员选择Text,下一步直到完成。代码窗口中会生成一些我们不需要的，删除，剩下的代码如下： <br />
<br />
Option Explicit <br />
<br />
'注意！不要删除或修改下列被注释的行！ <br />
<br />
'MappingInfo=txtinfo,txtinfo,-1,Text <br />
<br />
Public Property Get GetInfo() As String <br />
<br />
GetInfo = txtinfo.Text <br />
<br />
End Property <br />
<br />
Public Property Let GetInfo(ByVal New_GetInfo As String) <br />
<br />
txtinfo.Text() = New_GetInfo <br />
<br />
PropertyChanged "GetInfo" <br />
<br />
End Property <br />
<br />
'从存贮器中加载属性值 <br />
<br />
Private Sub UserControl_ReadProperties(PropBag As PropertyBag) <br />
<br />
txtinfo.Text = PropBag.ReadProperty("GetInfo", "Text1") <br />
<br />
End Sub <br />
<br />
'将属性值写到存储器 <br />
<br />
Private Sub UserControl_WriteProperties(PropBag As PropertyBag) <br />
<br />
Call PropBag.WriteProperty("GetInfo", txtinfo.Text, "Text1") <br />
<br />
End Sub <br />
<br />
OK,好了，我们编译成fOcx.ocx文件，然后F5直接运行,VB会打开一个测试页。如下： <br />
<br />
E:Program FilesMicrosoft Visual StudioVB98UC1.html <br />
<br />
同时，打开你的IE浏览器,看到了吧，你做的控件出现在了这个测试页中。 <br />
<br />
你可以打开测试页，可以看到ClsID,比如：890D1028-298B-45CF-9A64-6ED5A5BACBC9 <br />
<br />
因为VB编译的时候已经完成注册.所以无法模拟客户端没有安装该控件时出现的提示. 我们继续 <br />
<br />
使用regsvr32 F:csdn_vbcom+_activeXsample1fOcx.ocx &#8211;u卸载 <br />
<br />
或者 打开注册表,在HKEY_CLASSES_ROOTCLSID下面找到 890D1028-298B-45CF-9A64-6ED5A5BACBC9项,删除之,当然这种方式还有项存在而没有删除干净. <br />
<br />
此时浏览http://yang/uc1.htm,由于IE中ActiveX设置为启动，所以，控件会显示出来。 <br />
<br />
下载后的ocx到哪里去了<br />
<br />
打开该目录(可能有所不同)E:WINDOWS.0Downloaded Program Files,看到了吧,fOcx.UC1文件在这个目录下. <br />
<br />
原理:客户端下载该控件后,自动注册,然后放在上述这个目录下.这时我们可以打开注册表看看CLSID,呵呵,还是以前的那个. <br />
<br />
我们可以右键看看fOcx.UC1的属性,看看相关内容,这里显示了该OCX所依赖的所有文件.所以,你的OCX尽量减少使用高级控件或者第三方的控件,否则,下载就有些问题了. <br />
<br />
如果IE中关于ActiveX的选项设为禁用,那么浏览器就会出现对话框&#8221;当前安全设置禁止运行该页中的ActiveX控件.因此可能无法正确显示该页&#8221;，这个就需要其他的方式来处理了。 <br />
<br />
一般用户默认的都是禁用ActiveX选项,所以让用户自己设置不太合适。<br />
我们来看看如何从服务端获取数据，传递到ActiveX控件中。 <br />
<br />
1） 初始化时使用参数绑定 <br />
<br />
2） 运行时得到数据 <br />
<br />
打开vb6,新建ActiveX控件工程。 <br />
<br />
工程名:fOcx，用户控件名:UC2 <br />
<br />
为了方便，我们使用ActiveX控件接口向导&#8230;,菜单-&gt;外接程序-&gt;外接程序管理器-&gt;VB 6 ActiveX控件接口向导。确定即可。 <br />
<br />
打开ActiveX控件接口向导，下一步，对于可用名称和选定名称我们默认下一步，新建自定义成员，GetInfo类型:属性，下一步，共有方法中选择我们刚才添加的GetInfo,映射到控件选择TxtInfo,成员选择Text,下一步直到完成。代码窗口中会生成一些我们不需要的，删除， <br />
<br />
'注意！不要删除或修改下列被注释的行！ <br />
<br />
'MappingInfo=txtinfo,txtinfo,-1,Text <br />
<br />
Public Property Get GetInfo() As String <br />
<br />
GetInfo = txtinfo.Text <br />
<br />
End Property <br />
<br />
Public Property Let GetInfo(ByVal New_GetInfo As String) <br />
<br />
txtinfo.Text() = New_GetInfo <br />
<br />
PropertyChanged "GetInfo" <br />
<br />
End Property <br />
<br />
Private Sub Command1_Click() <br />
<br />
Label2.Caption = GetInfo() <br />
<br />
End Sub <br />
<br />
'从存贮器中加载属性值 <br />
<br />
Private Sub UserControl_ReadProperties(PropBag As PropertyBag) <br />
<br />
txtinfo.Text = PropBag.ReadProperty("GetInfo", "Text1") <br />
<br />
End Sub <br />
<br />
'将属性值写到存储器 <br />
<br />
Private Sub UserControl_WriteProperties(PropBag As PropertyBag) <br />
<br />
Call PropBag.WriteProperty("GetInfo", txtinfo.Text, "Text1") <br />
<br />
End Sub <br />
<br />
编译成OCX控件.运行生成的测试页.Text中默认的是Text1 如何将服务器端的数据传递给OCX呢? 使用Microsoft ActiveX Control Pad这个工具,可以很容易找到. 直接用这个工具把测试页打开. <br />
<br />
菜单-&gt;Edit-&gt;Edit Activex Control,呵呵,打开了一个可视化的界面. <br />
<br />
看到了吧,有一个属性框,我们可以进行设置，设置完成以后的代码如下： <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<object id="GetClient" width="507" height="440" classid="CLSID:890D1028-298B-45CF-9A64-6ED5A5BACBC9" codebase="http://localhost/xml/fOcx.ocx"> <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
</object> <br />
<br />
<br />
<br />
<br />
<br />
增加了ID,ID就是我们用来访问的标志.还有我们的属性GetInfo,我们也设定初始值了 好了,运行. Text中就出现了我们设定的值&#8221;这是ocx得到的客户端读卡器的信息&#8221; <br />
<br />
我们把上边的页面改成asp的,看代码: <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<object id="GetClient" width="507" height="440" classid="CLSID:56DFCA88-F5B8-4879-853B-97FE504423FD" codebase="http://localhost/xml/fOcx.ocx"> <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
</object> <br />
<br />
<br />
<br />
<br />
<br />
OK,运行即可 <br />
<br />
我们看看第二种情况 <br />
<br />
运行时得到数据 <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript> <br />
<br />
<!-- <br />
<br />
function button1_onclick() <br />
<br />
<br />
<br />
//--> <br />
<br />
</SCRIPT>
<br />
<br />
<br />
<br />
<br />
<br />
<object id="GetClient" width="507" height="440" classid="CLSID:56DFCA88-F5B8-4879-853B-97FE504423FD" codebase="http://localhost/xml/fOcx.ocx"> <br />
<br />
<br />
<br />
<br />
<br />
</object> <br />
<br />
<input id="button1" type="button" value="Button" name="button1" language="javascript" onclick="return button1_onclick()" /> <br />
<br />
<br />
<br />
<br />
<br />
运行后,点击按钮即可看到效果. <br />
问题提出: <br />
<br />
ActiveX控件得到客户端的信息，如何传递到服务端??? 一种方法就是得到值后,使用Get,Post方式提交,这可能也是最常用的. <br />
<br />
有没有更好一些的方法呢? 能不能在控件中直接向服务器发出请求而得到数据呢? <br />
<br />
打开vb6,新建ActiveX控件工程。 <br />
<br />
工程名:fOcx，用户控件名:UC3 <br />
<br />
添加1个按钮，2个文本框 <br />
<br />
代码如下： <br />
<br />
Option Explicit <br />
<br />
Private Sub Command1_Click() <br />
<br />
'注意字符串和数字的写法有些区别 <br />
<br />
'使用AsyncRead通过HTTP发送你的请求 <br />
<br />
UserControl.AsyncRead "http://yang/xml/activex.asp?s1=" &amp;am ... nbsp;&amp; "", vbAsyncTypeByteArray <br />
<br />
UserControl.AsyncRead "http://yang/xml/activex.asp?s1=" &amp; Text1.Text, vbAsyncTypeByteArray <br />
<br />
End Sub <br />
<br />
'AsyncReadComplete 事件用来从asp页面接受和分析。 <br />
<br />
'当容器刚完成一个异步读取请求时 , 发生该事件? <br />
<br />
'AsyncProp 中的数值指定了已完成的某个异步数据读取请求, <br />
<br />
'它与前一个 AsyncRead 方法调用中的数据匹配。 <br />
<br />
'AsyncReadComplete 事件过程中应包含错误处理代码，因为错误状态会终止下载。 <br />
<br />
'如果发生了这种情况，当访问 AsyncProperty 对象的 Value 属性时将会发生错误。 <br />
<br />
Private Sub UserControl_AsyncReadComplete(AsyncProp As AsyncProperty) <br />
<br />
On Error GoTo errhandle <br />
<br />
Text2.Text = ByteArrayToString(AsyncProp.Value) <br />
<br />
errhandle: <br />
<br />
Err.Raise 601, "异步读取发生了错误", Err.Description <br />
<br />
End Sub <br />
<br />
'将字节数组转换成字符串 <br />
<br />
Public Function ByteArrayToString(bytArray() As Byte) As String <br />
<br />
Dim sAns As String <br />
<br />
sAns = StrConv(bytArray, vbUnicode) <br />
<br />
ByteArrayToString = sAns <br />
<br />
End Function <br />
<br />
我们来看看http://yang/xml/activex.asp这个文件 <br />
<br />
<br />
<br />
很简单，使用request接受参数,response返回。 <br />
<br />
这个例子可以进一步处理，将服务器名以属性的方式传递给控件。 <br />
<br />
比如： <br />
<br />
然后在程序中得到，就可以使用了，如： UserControl.AsyncRead "http://192.168.0.1/xml/activex.asp?s1="  ... t &amp; "", vbAsyncTypeByteArray <br />
<br />
然后在程序中得到就可以灵活处理了。
<img src ="http://www.blogjava.net/aiaiwoo/aggbug/336756.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/aiaiwoo/" target="_blank">aiaiwoo</a> 2010-11-02 09:11 <a href="http://www.blogjava.net/aiaiwoo/articles/336756.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASP调用DLL的方法 </title><link>http://www.blogjava.net/aiaiwoo/articles/336704.html</link><dc:creator>aiaiwoo</dc:creator><author>aiaiwoo</author><pubDate>Mon, 01 Nov 2010 08:43:00 GMT</pubDate><guid>http://www.blogjava.net/aiaiwoo/articles/336704.html</guid><wfw:comment>http://www.blogjava.net/aiaiwoo/comments/336704.html</wfw:comment><comments>http://www.blogjava.net/aiaiwoo/articles/336704.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/aiaiwoo/comments/commentRss/336704.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/aiaiwoo/services/trackbacks/336704.html</trackback:ping><description><![CDATA[<p><strong>ASP调用注册DLL:</strong>&nbsp;</p>
<p>regsvr32&nbsp;d:\my.dll<br />
set&nbsp;obj=<font face="Verdana">set&nbsp;obj=Server.CreateObject("my.aspdll")</font>&nbsp;</p>
<p><strong>ASP调用未注册DLL:</strong><br />
&nbsp;</p>
<p><font face="Verdana">&lt;%&nbsp;@&nbsp;language="vbscript"&nbsp;%&gt;<br />
&lt;!--METADATA&nbsp;TYPE="typelib"&nbsp;FILE="d:\my.dll"--&gt;<br />
set&nbsp;obj=<font face="Verdana">set&nbsp;obj=Server.CreateObject("my.aspdll")</font></font>&nbsp;</p>
<p><font face="Verdana">不注册调用的DLL必须是物理路径.</font>&nbsp;</p>
<img src ="http://www.blogjava.net/aiaiwoo/aggbug/336704.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/aiaiwoo/" target="_blank">aiaiwoo</a> 2010-11-01 16:43 <a href="http://www.blogjava.net/aiaiwoo/articles/336704.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASP封装成DLL一些注意事项</title><link>http://www.blogjava.net/aiaiwoo/articles/336703.html</link><dc:creator>aiaiwoo</dc:creator><author>aiaiwoo</author><pubDate>Mon, 01 Nov 2010 08:42:00 GMT</pubDate><guid>http://www.blogjava.net/aiaiwoo/articles/336703.html</guid><wfw:comment>http://www.blogjava.net/aiaiwoo/comments/336703.html</wfw:comment><comments>http://www.blogjava.net/aiaiwoo/articles/336703.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/aiaiwoo/comments/commentRss/336703.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/aiaiwoo/services/trackbacks/336703.html</trackback:ping><description><![CDATA[<p>ASP封装成DLL一些注意事项<br />
<br />
【 来源：自由呼吸 作者：佚名 更新时间：2005-08-14 | 字体：大 中 小】</p>
<p>&nbsp;&nbsp;&nbsp; 虽然ASP.NET代码封装方案很好，完全可以取代ASP，但是用惯了ASP，而且对一些小项目也不想动用到.NET这个傍然大物，因为电脑性能跟不上，所以还是存在ASP封装的种种问题，经过多次试验，对转换成DLL的过程写下一些心得：</p>
<p>1、代码和DLL的区别</p>
<p>&nbsp;&nbsp;&nbsp; DLL代码前要加上以下一段，目的是引用ASP五大对象：<br />
Private Context As ScriptingContext<br />
Private Application As Application<br />
Private Response As Response<br />
Private Request As Request<br />
Private Session As Session<br />
Private Server As Server</p>
<p>Public Sub OnStartPage(PassedScriptContext As ScriptingContext)<br />
&nbsp;&nbsp;&nbsp; Set Context = PassedScriptContext&nbsp; 'Asp运行环境对象<br />
&nbsp;&nbsp; Set Application = Context.Application&nbsp; 'Asp 五大对象<br />
&nbsp;&nbsp; Set Request = Context.Request<br />
&nbsp;&nbsp;&nbsp; Set Response = Context.Response<br />
&nbsp;&nbsp;&nbsp; Set Server = Context.Server<br />
&nbsp;&nbsp;&nbsp; Set Session = Context.Session<br />
End Sub</p>
<p>2、部件引用</p>
<p>&nbsp; 要引用MicroSoft Active Server Pages Objects Library<br />
&nbsp; 如果DLL里也封装了数据库连接(Connections)和数据集(RecordSet)，DLL工程可以使用原来ASP里的数据库写法，也可以通过以下引用部件的方法实现：MicroSoft ActiveX Data Objects&nbsp; 2.7 Library <br />
&nbsp;同时把原ASP程序里的Server.CreateObject("ADODB.CONNECTION")改成下面样子，加在代码头部<br />
&nbsp; Public conn As New ADODB.connection<br />
&nbsp;&nbsp; Public rs As New ADODB.Recordset</p>
<p>另外：程序结束时要记得关闭连接，免得占用系统资源，影响服务器运行.<br />
&nbsp;&nbsp; Set rs = Nothing<br />
&nbsp;&nbsp; rs.Close<br />
&nbsp;&nbsp; Set conn = Nothing '将连接设为空，释放它所占用的资源。<br />
&nbsp; conn Close '将连接关闭(无释放连接所占用的资源)</p>
<p><br />
3、DLL调试<br />
&nbsp;&nbsp;&nbsp; 按常规办法，经常要操作重启IIS,很烦，最简单的办法，写一个BAT命令保存成sss.bat，放在桌面上，每次修改完DLL之前运行一次，然后在VB6里生成DLL,就可以运行程序了，不需要再注册一次DLL,为什么？我也不清楚：<br />
&nbsp;&nbsp;&nbsp; regsvr32 E:VBvbdllmy.dll -u<br />
&nbsp;&nbsp;&nbsp; net stop "world wide web publishing service"<br />
&nbsp;&nbsp;&nbsp; net Start "world wide web publishing service"</p>
<p>4、改变ASP脚本编写习惯<br />
&nbsp;&nbsp; 一般我会先写一个普通的ASP程序，运行成功需交付客户时才转换成DLL,这时，要注意ASP代码编写时把程序代码和HTML分成明显的两部分，不要混在一起乱糟糟的转换时要花很多精力去修改和整理。</p>
<p>5、其它。。。（想到再写）</p>
<p>&nbsp;---★ 本文转摘自『IT学习者』&#8594; http://www.itlearner.com/article/2087</p>
<img src ="http://www.blogjava.net/aiaiwoo/aggbug/336703.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/aiaiwoo/" target="_blank">aiaiwoo</a> 2010-11-01 16:42 <a href="http://www.blogjava.net/aiaiwoo/articles/336703.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Web页面上直接打开、编辑、创建word和EXCEL文件</title><link>http://www.blogjava.net/aiaiwoo/articles/336702.html</link><dc:creator>aiaiwoo</dc:creator><author>aiaiwoo</author><pubDate>Mon, 01 Nov 2010 08:40:00 GMT</pubDate><guid>http://www.blogjava.net/aiaiwoo/articles/336702.html</guid><wfw:comment>http://www.blogjava.net/aiaiwoo/comments/336702.html</wfw:comment><comments>http://www.blogjava.net/aiaiwoo/articles/336702.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/aiaiwoo/comments/commentRss/336702.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/aiaiwoo/services/trackbacks/336702.html</trackback:ping><description><![CDATA[<p>在Web页面上直接打开、编辑、创建word和EXCEL文件<br />
<br />
作者：佚名　日期：2007年08月27日　来源：不详 浏览：58 次 <br />
--------------------------------------------------------------------------------<br />
<br />
核心提示： 友询问如何在Web页面上做到像SharePoint中的效果一样，能直接激活客户端的Word来打开.doc文件，而不是类似直接点击.doc文档链接时Word在IE中被打开那样。想想这个问题应该很多人都会感兴趣，所以干脆写一篇blog来大致描述一下方法。 装Office2003以后，有一个ActiveX控件被安装到了系统中，这个控件位于&#8220;Program Files\\Microsoft&amp;nbs<br />
　 <br />
-<br />
<br />
<br />
友询问如何在Web页面上做到像SharePoint中的效果一样，能直接激活客户端的Word来打开.doc文件，而不是类似直接点击.doc文档链接时Word在IE中被打开那样。想想这个问题应该很多人都会感兴趣，所以干脆写一篇blog来大致描述一下方法。 <br />
装Office2003以后，有一个ActiveX控件被安装到了系统中，这个控件位于&#8220;Program Files\\Microsoft Office\\OFFICE11\\owssupp.dll&#8221;。通过这个控件，客户端页面上的javascript就可以激活本地的Office软件，来实现打开、编辑Office文档。（另，Office XP应该就已经包含这个ActiveX控件了。） <br />
，用Script创建一个本地的对象： <br />
enDocObj = new ActiveXObject(\"SharePoint.OpenDocuments.2\"); // 为了兼容Office XP，可以创建&#8220;SharePoint.OpenDocuments.1&#8221; <br />
，调用openDocObj的相应的方法。比如打开服务器上的一个Office文档： <br />
openDocObj.ViewDocument(\"http://www.abc.com/documents/sample.doc\"); <br />
openDocObj对象会根据参数中不同的Office文档类型（.doc、.xls、.ppt）来打开不同的程序（Word、Excel、PowerPoint）。ViewDocument()方法还有一个重载签名，可以让我们手工指定激活哪个程序来打开文档： <br />
openDocObj.ViewDocument(\"http://www.abc.com/documents/sample.doc\", 要激活的程序的ProgID); <br />
那么要打开Office程序在线编辑文件又如何？ <br />
enDocObj.EditDocument(\"http://www.abc.com/documents/sample.doc\"); <br />
就可以直接激活Word，在Word里面编辑文档，然后直接点击Word里面的保存功能，就可以将文件保存会服务器上了。注意：为了让Word能将编辑后的文档直接保存会服务器，访问Web站点的当前上下文的Windows Identity必须对服务器的相应目录（即&#8220;http://www.abc.com/documents&#8221;这个虚拟目录所对应的服务器上的物理路径）有相应的写权限，否则保存动作会失败。编辑完成后，EditDocument()会返回一个bool值，来反映编辑操作是否成功。 <br />
我们还可以通过打开服务器上的一个文档模版，来创建一个新的文档： <br />
openDocObj.CreateNewDocument(\"http://www.abc.com/documents/sampleTemplate.dot\", \"http://www.abc.com/documents/\"); <br />
就可以使用&#8220;http://www.abc.com/documents/sampleTemplate.dot&#8221;这个模版来创建一个新的文档，默认新文档的保存地点是&#8220;http://www.abc.com/documents/&#8221;。创建新文档时使用的程序取决于模版文件的类型（比如.dot模版会对应Word）。新文档的保存同样需要注意权限问题。CreateNewDocument()方法同样会返回一个bool值来反映操作是否成功。CreateNewDocument()方法的第一个参数，除了可以使用一个模版的地址外，还可以直接指定为希望用来创建新文档的客户端程序的ProgID。 <br />
<br />
</p>
<img src ="http://www.blogjava.net/aiaiwoo/aggbug/336702.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/aiaiwoo/" target="_blank">aiaiwoo</a> 2010-11-01 16:40 <a href="http://www.blogjava.net/aiaiwoo/articles/336702.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何从客户端 VBScript 自动化 Excel</title><link>http://www.blogjava.net/aiaiwoo/articles/336676.html</link><dc:creator>aiaiwoo</dc:creator><author>aiaiwoo</author><pubDate>Mon, 01 Nov 2010 06:46:00 GMT</pubDate><guid>http://www.blogjava.net/aiaiwoo/articles/336676.html</guid><wfw:comment>http://www.blogjava.net/aiaiwoo/comments/336676.html</wfw:comment><comments>http://www.blogjava.net/aiaiwoo/articles/336676.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/aiaiwoo/comments/commentRss/336676.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/aiaiwoo/services/trackbacks/336676.html</trackback:ping><description><![CDATA[<span  style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; ">
<h3 id="tocHeadRef" style=" font-size: 15px; margin-top: 15px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; "><span  style="font-weight: normal; font-size: 13px; ">
<h3 id="tocHeadRef" style=" font-size: 15px; margin-top: 15px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; ">示例代码</h3>
<ol style=" position: relative; ">
    <li style=" position: relative; ">在任意文本编辑器中创建下面的 HTML 文件并将该文件保存为 c:\excel.htm。
    <div class="kb_codebody" style=" position: relative; overflow-x: auto; margin-bottom: 10px; ">
    <div class="kb_codecontent" style=" width: 551px; border-left-color: #7fbae2; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; "><code>
    <pre class="code" style=" position: relative; padding-top: 10px; padding-right: 10px; padding-bottom: 20px; padding-left: 10px; width: 1px; color: #333333; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-family: Consolas, 'Courier New', Courier, monospace; ">&lt;HTML&gt;
    &lt;BODY&gt;
    &lt;INPUT id=button1 name=button1 type=button value=Button&gt;
    &lt;SCRIPT LANGUAGE="VBScript"&gt;
    sub button1_onclick()
    ' Launch Excel
    dim app
    set app = createobject("Excel.Application")
    ' Make it visible
    app.Visible = true
    ' Add a new workbook
    dim wb
    set wb = app.workbooks.add
    ' Fill array of values first...
    dim arr(19,9) ' Note: VBScript is zero-based
    for i = 1 to 20
    for j = 1 to 10
    arr(i-1,j-1) = i*j
    next
    next
    ' Declare a range object to hold our data
    dim rng
    set rng = wb.Activesheet.Range("A1").Resize(20,10)
    ' Now assign them all in one shot...
    rng.value = arr
    ' Add a new chart based on the data
    wb.Charts.Add
    wb.ActiveChart.ChartType = 70 'xl3dPieExploded
    wb.ActiveChart.SetSourceData rng, 2 ' xlColumns
    wb.ActiveChart.Location 2, "Sheet1" 'xlLocationAsObject
    ' Rotate it around...
    for i = 1 to 360 step 30
    wb.activechart.rotation = i
    next
    ' Give the user control of Excel
    app.UserControl = true
    end sub
    &lt;/SCRIPT&gt;
    &lt;/BODY&gt;
    &lt;/HTML&gt;
    </pre>
    </code></div>
    </div>
    </li>
    <li style=" position: relative; ">启动 Internet Explorer，在地址栏中键入&nbsp;<span class="userInput" style=" font-weight: bold; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; ">c:\excel.htm</span>，然后按 Enter。&nbsp;<br />
    <br />
    结果：在 Excel 中出现一个新的工作簿。新工作簿中的 Sheet1 包含数据并创建了一个新图表。新图表是旋转形状。</li>
</ol>
<strong>注意</strong>：如果在单击网页上的按钮时收到错误&#8220;ActiveX component can't create object 'createobject'&#8221;，请按照本文&#8220;参考&#8221;一节列出的文章中的说明检查您的安全设置。</span></h3>
</span>
<img src ="http://www.blogjava.net/aiaiwoo/aggbug/336676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/aiaiwoo/" target="_blank">aiaiwoo</a> 2010-11-01 14:46 <a href="http://www.blogjava.net/aiaiwoo/articles/336676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>asp操作Excel类</title><link>http://www.blogjava.net/aiaiwoo/articles/336648.html</link><dc:creator>aiaiwoo</dc:creator><author>aiaiwoo</author><pubDate>Mon, 01 Nov 2010 01:16:00 GMT</pubDate><guid>http://www.blogjava.net/aiaiwoo/articles/336648.html</guid><wfw:comment>http://www.blogjava.net/aiaiwoo/comments/336648.html</wfw:comment><comments>http://www.blogjava.net/aiaiwoo/articles/336648.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/aiaiwoo/comments/commentRss/336648.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/aiaiwoo/services/trackbacks/336648.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->&lt;%'*******************************************************************'使用说明'Dim&nbsp;a...&nbsp;&nbsp;<a href='http://www.blogjava.net/aiaiwoo/articles/336648.html'>阅读全文</a><img src ="http://www.blogjava.net/aiaiwoo/aggbug/336648.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/aiaiwoo/" target="_blank">aiaiwoo</a> 2010-11-01 09:16 <a href="http://www.blogjava.net/aiaiwoo/articles/336648.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>asp调用dll及asp封装dll实例</title><link>http://www.blogjava.net/aiaiwoo/articles/336439.html</link><dc:creator>aiaiwoo</dc:creator><author>aiaiwoo</author><pubDate>Fri, 29 Oct 2010 01:27:00 GMT</pubDate><guid>http://www.blogjava.net/aiaiwoo/articles/336439.html</guid><wfw:comment>http://www.blogjava.net/aiaiwoo/comments/336439.html</wfw:comment><comments>http://www.blogjava.net/aiaiwoo/articles/336439.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/aiaiwoo/comments/commentRss/336439.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/aiaiwoo/services/trackbacks/336439.html</trackback:ping><description><![CDATA[<p>asp调用dll及asp封装dll实例<br />
<br />
&nbsp;&nbsp; 写过一段时间的.net之后,再回过头来看asp,其实asp也同样可以像.net那样把代码进行封装的,感觉其实很爽的.但.net就是.net优势还是很明显的了,所以如果有些朋友想更深入的学习的话,还是选择.net. <br />
&nbsp;&nbsp;&nbsp; 不过今天还是把asp封装的问题写一写,我想网上也有很多这方面的文章,但在这里还是给大家写一个比较简单和实用的出来,便于大家上手,可能有些朋友特别是一些刚学这方面的朋友有所帮助,当然首页要准备的最重要的是vb工具了我用vb6.0</p>
<p>&nbsp;&nbsp;&nbsp; 启动你的VB,选择ActiveX图标.这个图标可以在新建工程找到!VB会提供一个默认的工程名(project1)和类名(class1).我们会将这两个名字都改掉.在改名之前,请首先确认我们拥有Microsoft Active Server Pages Object Library,它在我们的程序非常有用.从菜单中选择"工程",然后在其中选择"引用",就会出现"引用"窗口<br />
从中选择Microsoft Active Server Pages Object Library.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 首先在vb中建一个类文件:工程名:exp</p>
<p>&nbsp;&nbsp;&nbsp; 代码:</p>
<p>Dim MyApplication As Application<br />
Dim MyRequest As Request<br />
Dim MyResponse As Response<br />
Dim MyServer As Server<br />
Dim MySession As Session</p>
<p>Public Sub OnStartPage(PassedScriptingContext As ScriptingContext)<br />
Set MyScriptingContext = PassedScriptingContext<br />
Set MyApplication = MyScriptingContext.Application<br />
Set MyRequest = MyScriptingContext.Request<br />
Set MyResponse = MyScriptingContext.Response<br />
Set MyServer = MyScriptingContext.Server<br />
Set MySession = MyScriptingContext.Session<br />
End Sub</p>
<p>Public Sub OnEndPage()<br />
Set MyScriptingContext = Nothing<br />
Set MyApplication = Nothing<br />
Set MyRequest = Nothing<br />
Set MyResponse = Nothing<br />
Set MyServer = Nothing<br />
Set MySession = Nothing<br />
End Sub</p>
<p><br />
Public Sub hellow()<br />
MyResponse.Write ("Hello World")<br />
End Sub</p>
<p>Public Sub google()<br />
MyResponse.Write ("ssssssssssss")<br />
End Sub</p>
<p>说明:ScriptingContext传送给我们的对象请我们使用.这个ScriptingContext包括了全部的ASP方法和属性.实现上,这使得我们有能力访问所有ASP的对象</p>
<p>当然这里还有一步就是生成exp.dll文件了,生成之后就可以用&nbsp; regsvr32 d:/vb-asp/exp.dll 注册了.(很生要)</p>
<p>asp页面:</p>
<p>&lt;%@ Language=VBScript%&gt;<br />
&lt;HTML&gt;<br />
&lt;HEAD&gt;<br />
&lt;TITLE&gt;Example 1&lt;/TITLE&gt;<br />
&lt;/HEAD&gt; &lt;BODY&gt;</p>
<p>&lt;%<br />
dim Obj<br />
Set Obj = Server.CreateObject("exp.aspdll")<br />
Obj.hellow<br />
response.write("&lt;br&gt;")<br />
Obj.google<br />
%&gt;</p>
<p>&lt;/BODY&gt;<br />
&lt;/HTML&gt;</p>
<p>&nbsp;&nbsp; 说明:</p>
<p>Set Obj = Server.CreateObject("exp.aspdll")&nbsp; 其中,exp为工程名,aspdll为类名.Set Obj = Server.CreateObject("工程名.类名称")&nbsp; </p>
<p>测试通过.</p>
<p>===========================================================</p>
<p>对于更复杂的运用,大家可以通过这个实例向外扩展就可以了.</p>
<p>&nbsp;</p>
<p>如:</p>
<p>Public Sub connstr2()<br />
Set conn = MyServer.CreateObject("ADODB.Connection")<br />
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &amp; MyServer.MapPath("codata.mdb")</p>
<p>Set rs = conn.Execute("select * from news")<br />
Do While Not rs.EOF<br />
&nbsp;&nbsp; MyResponse.Write (rs("news_title") &amp; "&lt;br&gt;")<br />
rs.MoveNext<br />
Loop<br />
rs.Close<br />
Set conn = Nothing<br />
End Sub</p>
<p>这个是用数据库连接的代码封装,当然这里要添加ADO引用的</p>
<p><br />
文章出处：飞诺网(www.firnow.com):http://dev.firnow.com/course/4_webprogram/asp/aso_js/20071226/94440_2.html</p>
<img src ="http://www.blogjava.net/aiaiwoo/aggbug/336439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/aiaiwoo/" target="_blank">aiaiwoo</a> 2010-10-29 09:27 <a href="http://www.blogjava.net/aiaiwoo/articles/336439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASP操作Excel技术总结</title><link>http://www.blogjava.net/aiaiwoo/articles/336437.html</link><dc:creator>aiaiwoo</dc:creator><author>aiaiwoo</author><pubDate>Fri, 29 Oct 2010 01:19:00 GMT</pubDate><guid>http://www.blogjava.net/aiaiwoo/articles/336437.html</guid><wfw:comment>http://www.blogjava.net/aiaiwoo/comments/336437.html</wfw:comment><comments>http://www.blogjava.net/aiaiwoo/articles/336437.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/aiaiwoo/comments/commentRss/336437.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/aiaiwoo/services/trackbacks/336437.html</trackback:ping><description><![CDATA[<p>ASP操作Excel技术总结<br />
www.firnow.com&nbsp;&nbsp;&nbsp; 时间 ： 2007-10-21&nbsp; 作者：佚名&nbsp;&nbsp; 编辑：本站 点击：&nbsp; 135 [ 评论 ]<br />
-<br />
-<br />
综合 资源 电子书 社区&nbsp;&nbsp; ASP操作Excel技术总结 <br />
&nbsp;<br />
目录<br />
一、　　环境配置<br />
二、　　ASP对Excel的基本操作<br />
三、　　ASP操作Excel生成数据表<br />
四、　　ASP操作Excel生成Chart图<br />
五、　　服务器端Excel文件浏览、下载、删除方案<br />
六、　　附录</p>
<p>正文<br />
一、　　环境配置<br />
服务器端的环境配置从参考资料上看，微软系列的配置应该都行，即：<br />
1．Win9x+PWS+Office<br />
2．Win2000 Professional+PWS+Office<br />
3．Win2000 Server+IIS+Office<br />
目前笔者测试成功的环境是后二者。Office的版本没有特殊要求，考虑到客户机配置的不确定性和下兼容特性，建议服务器端Office版本不要太高，以防止客户机下载后无法正确显示。<br />
服务器端环境配置还有两个偶然的发现是：<br />
1．　　笔者开发机器上原来装有金山的WPS2002，结果Excel对象创建始终出现问题，卸载WPS2002后，错误消失。<br />
2．　　笔者开发ASP代码喜欢用FrontPage，结果发现如果FrontPage打开（服务器端），对象创建出现不稳定现象，时而成功时而不成功。扩展考察后发现，Office系列的软件如果在服务器端运行，则Excel对象的创建很难成功。<br />
服务器端还必须要设置的一点是COM组件的操作权限。在命令行键入&#8220;DCOMCNFG&#8221;，则进入COM组件配置界面，选择Microsoft Excel后点击属性按钮，将三个单选项一律选择自定义，编辑中将Everyone加入所有权限。保存完毕后重新启动服务器。<br />
客户端的环境配置没发现什么特别讲究的地方，只要装有Office和IE即可，版本通用的好象都可以。</p>
<p>二、　　ASP对Excel的基本操作<br />
1、　　建立Excel对象<br />
set objExcelApp = CreateObject("Excel.Application")<br />
objExcelApp.DisplayAlerts = false　　　　不显示警告<br />
objExcelApp.Application.Visible = false　　　　不显示界面<br />
2、　　新建Excel文件<br />
objExcelApp.WorkBooks.add<br />
set objExcelBook = objExcelApp.ActiveWorkBook<br />
set objExcelSheets = objExcelBook.Worksheets<br />
set objExcelSheet = objExcelBook.Sheets(1)<br />
3、　　读取已有Excel文件<br />
strAddr = Server.MapPath(".")<br />
objExcelApp.WorkBooks.Open(strAddr &amp; "\Templet\Table.xls")<br />
set objExcelBook = objExcelApp.ActiveWorkBook<br />
set objExcelSheets = objExcelBook.Worksheets<br />
set objExcelSheet = objExcelBook.Sheets(1)<br />
4、　　另存Excel文件<br />
objExcelBook.SaveAs strAddr &amp; "\Temp\Table.xls"<br />
5、　　保存Excel文件<br />
objExcelBook.Save　　　　（笔者测试时保存成功，页面报错。）<br />
6、　　退出Excel操作<br />
objExcelApp.Quit　　一定要退出<br />
set objExcelApp = Nothing</p>
<p>三、　　ASP操作Excel生成数据表<br />
1、　　在一个范围内插入数据<br />
objExcelSheet.Range("B3:k3").Value = Array("67", "87", "5", "9", "7", "45", "45", "54", "54", "10")<br />
2、　　在一个单元格内插入数据<br />
objExcelSheet.Cells(3,1).Value="Internet Explorer"<br />
3、　　选中一个范围<br />
4、　　单元格左边画粗线条<br />
5、　　单元格右边画粗线条<br />
6、　　单元格上边画粗线条<br />
7、　　单元格下边画粗线条<br />
8、　　单元格设定背景色<br />
9、　　合并单元格<br />
10、　　插入行<br />
11、　　插入列</p>
<p>四、　　ASP操作Excel生成Chart图<br />
1、　　创建Chart图<br />
objExcelApp.Charts.Add<br />
2、　　设定Chart图种类<br />
objExcelApp.ActiveChart.ChartType = 97<br />
注：二维折线图，4；二维饼图，5；二维柱形图，51<br />
3、　　设定Chart图标题<br />
objExcelApp.ActiveChart.HasTitle = True<br />
objExcelApp.ActiveChart.ChartTitle.Text = "A test Chart"<br />
4、　　通过表格数据设定图形<br />
objExcelApp.ActiveChart.SetSourceData objExcelSheet.Range("A1:k5"),1<br />
5、　　直接设定图形数据（推荐）<br />
objExcelApp.ActiveChart.SeriesCollection.NewSeries<br />
objExcelApp.ActiveChart.SeriesCollection(1).Name = "=""333"""<br />
objExcelApp.ActiveChart.SeriesCollection(1).Values = "={1,4,5,6,2}"<br />
6、　　绑定Chart图<br />
objExcelApp.ActiveChart.Location 1<br />
7、　　显示数据表<br />
objExcelApp.ActiveChart.HasDataTable = True<br />
8、　　显示图例<br />
objExcelApp.ActiveChart.DataTable.ShowLegendKey = True</p>
<p>五、　　服务器端Excel文件浏览、下载、删除方案<br />
浏览的解决方法很多，&#8220;Location.href=&#8221;，&#8220;Navigate&#8221;，&#8220;Response.Redirect&#8221;都可以实现，建议用客户端的方法，原因是给服务器更多的时间生成Excel文件。<br />
下载的实现要麻烦一些。用网上现成的服务器端下载组件或自己定制开发一个组件是比较好的方案。另外一种方法是在客户端操作Excel组件，由客户端操作服务器端Excel文件另存至客户端。这种方法要求客户端开放不安全ActiveX控件的操作权限，考虑到通知每个客户将服务器设置为可信站点的麻烦程度建议还是用第一个方法比较省事。<br />
删除方案由三部分组成：<br />
A：　　同一用户生成的Excel文件用同一个文件名，文件名可用用户ID号或SessionID号等可确信不重复字符串组成。这样新文件生成时自动覆盖上一文件。<br />
B：　　在Global.asa文件中设置Session_onEnd事件激发时，删除这个用户的Excel暂存文件。<br />
C：　　在Global.asa文件中设置Application_onStart事件激发时，删除暂存目录下的所有文件。<br />
注：建议目录结构 \Src 代码目录 \Templet 模板目录 \Temp 暂存目录</p>
<p>六、　　附录<br />
出错时Excel出现的死进程出现是一件很头疼的事情。在每个文件前加上&#8220;On Error Resume Next&#8221;将有助于改善这种情况，因为它会不管文件是否产生错误都坚持执行到&#8220;Application.Quit&#8221;，保证每次程序执行完不留下死进程。 </p>
<p>&nbsp;</p>
<p><br />
以上摘自&nbsp; http://blog.sendsong.cn</p>
<p>&nbsp;</p>
<p>文章出处：飞诺网(www.firnow.com):http://dev.firnow.com/course/4_webprogram/asp/aso_js/20071021/78720.html</p>
<img src ="http://www.blogjava.net/aiaiwoo/aggbug/336437.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/aiaiwoo/" target="_blank">aiaiwoo</a> 2010-10-29 09:19 <a href="http://www.blogjava.net/aiaiwoo/articles/336437.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>