VB用了ShockwaveFlash控件,载入了一个联网查天气的Flash,就是这个FLASH: "http://flash.weather.com.cn/sk2/shikuang.swf?id=101050101"这个Flash有几个选项,有温度,湿度,气压,风向等,这些是可以用鼠标点击后查看的,但我想让VB自己实现点击这些选项的这个动作,就是想实现每隔5秒自动换一个天气项目,我之前用指定坐标模拟鼠标点击动作,但效果不理想,能不能用程序直接向ShockwaveFlash控件写某个指令来实现切换项目的动作?哪位高人可以帮助一下,万分感谢!

解决方案 »

  1.   

    控件可以接收、发送flash命令的flash发命令给vb:
    在flash中,用fscommand(参数1,参数2);vb的shockwaveflash控件接收,vb传值给Flash。me.shockwaveflash.setVal...什么的,忘记了,明天再给你段例子吧。
      

  2.   


    如期回帖
    Private Sub ShockwaveFlash1_FSCommand(ByVal command As String, ByVal args As String)
    ' 这里是用来接收Flash中发出的命令
    ' Flash的命令格式为 fscommand(command,args);
    End Sub' VB发送参数给Flash
    Me.ShockwaveFlash1.SetVariable Flash中的元件名, 参数值
    ' 例如Flash中有个文本框元件,实例名为txt_Name,
    Me.ShockwaveFlash1.SetVariable "_root.txt_Name.text", "显示我吧"
      

  3.   

    首先非常感谢您的帮助,我还有些不明白的地方要请教一下,就是我怎么样才能知道FLASH中的元件名呢?如果想点击“气压”这个选项,变量名是“气压”吗?还有就是我想实现在是点击的这个动作,不是让文本框显示内容,这个应该是把变量改为多少才能实现点击的动作呢?
      

  4.   

    变量的名称是你在vb和flash中定义的,如果flash不是你做的,那你要和做flash程序的协调这个定义,或flash用fscommand把元件名传给vb。赋值和执行函数是相同的原理。如下例:
    Flash中有一个按钮btnPa,显示为“查询气压”,一个显示当前气压的元件mcPa,比如一个100帧的圆柱体MC
    按钮命令为:
    var currentValue = 0;
    btn_Pa.onRelease = function (){
        fscommand("Query_Pa",currentValue);
    }
    mcPa.onEnterFrame = function (){
        if(currentValue != 0){
            mc.gotoAndStop(currentValue);
            currentValue = 0;
        }
    }///
    VB中的代码: 
    窗体上有一个ShockwaveFlash1,载入上面的Flash
    Private Sub ShockwaveFlash1_FSCommand(ByVal command As String, ByVal args As String)
        '这里是用来接收Flash中发出的命令
        if command =="Query_Pa" then 
            MyQueryPA
        end if
    End SubSub MyQueryPA()
       ' 查询出当前气压的值,并传回给Flash中的变量currentValue
       query pa
       Me.ShockwaveFlash1.SetVariable "currentValue", 100
    End Sub
      

  5.   

    FLASH是网上现成的,我找不到作者来协调他的定义,有什么办法能得到变量名?就是这个有闭关天气的FLASH:"http://flash.weather.com.cn/sk2/shikuang.swf?id=101050101",可以用IE直接打开,也可以用ShockwaveFlash控件打开,我就是想让VB实现自动切换气压、湿度等选项,应该怎么办呢?
      

  6.   

    我自认为对flash有一定了解,但是你所说的这个FLASH网页感到特别棘手.网页源文件隐藏得比较彻底,网页FLASH不能下载到本地,所以分析源文件和分析FLASH的代码都无法实现,想来只有两条路可走(1)抓包;(2)确定按钮在屏幕上的位置,向屏幕的确定区域发送Click信息.
      

  7.   

    第2种我用了,在XP下比较成功,可同样的程序在VISTA下坐标不准确,点击位置有偏差,如果单纯改变模拟点击的坐标值来适应VISTA的话我又怕XP下又不正常了,所以才想用传递的方法来使XP下和VISTA下都运行成功。另外第1种方法说的抓包感觉应该是一个很好的办法,但我不太会抓。