2013-04-20 90 views
0

我得到了一个应用程序,该应用程序为其接口使用了Flash,并且我想从此应用程序中提取信息,并在我自己的应用程序中解析/使用它(处理数据,一个mysqldb中的基本要素等)。 .swf文件是用AS2编写的,可以很容易地修改。所以我的目标是发送信息(真的只是信息,能够发送数字(至少体面的大小)将使我能够以任何方式实现我自己的编码和分区协议),我当然不会挑剔的手段。将消息从沙盒发送到自定义应用程序

这是我目前的做法(不是我自己的想法,要归功于我koreanrandom.org仅仅用自己的源来学习。):

  • 使用DokanLib挂载虚拟文件系统(和实施getFileInformation -handler )
  • 使用LoadVars的AS2-环境中与参数,如"../.logger/@encoded_information"
  • 因为getFileInformation得到访问的文件名作为参数,我可以对其进行解码,把若干个重新走到一起(如果他们不得不分裂,窗户似乎并不喜欢文件名w ith几百个字符长度)并使用解码后的数据

但是,我的应用程序经常会导致蓝屏(不问为什么。我没有任何线索,蓝屏信息总是不同),而且koreanrandom.org上的开发人员也不喜欢被问到太多问题,所以我来问这里是否有其他方式将信息从沙盒闪存环境传递给准备好的听众。

我开始考虑奇怪的东西(好吧,滥用虚拟文件系统&作为信息传输方式的文件名可能也很奇怪 - 但它仍然是一个伟大的想法),如挑起某些Windows函数被调用和与全球勾手合作,但我还没有掌握认真的计划。

“通常”像通过这样不要方法访问Web服务器的方法似乎工作:

var target_mc = createEmptyMovieClip("target_mc", this.getNextHighestDepth()); 
loadVariables("http://127.0.0.1/Tools/indata.php", "target_mc", "GET"); 

indata.php就已经创建了一个文件,如果它被访问,但它没有。)

XMLSocket不工作或者,我试图下面的代码示例(在端口12345使用netcat -l):

Logger.add("begin"); 
var theSocket:XMLSocket = new XMLSocket(); 
theSocket.onConnect = function(myStatus) { 
    if (myStatus) { 
     Logger.add("XMLSocket sucessfully connected") 
    } else { 
     Logger.add("XMLSocket NO CONNECTION"); 
    } 
}; 
theSocket.connect("127.0.0.1", 12345); 
var myXML:XML = new XML(); 
var mySend = myXML.createElement("thenode"); 
mySend.attributes.myData = "someData"; 
myXML.appendChild(mySend); 
theSocket.send(myXML); 
Logger.add("socket sent"); 

没有按在所有要么将不起作用,记录器的输出只是beginsocket sent

注释:记录仪是由人从koreanrandom.org创建并依赖于他们的杜坎实现,这从来没有引起蓝屏我。虽然我的执行过程中没有发现我的错误,所以我开始寻找解决我的问题的其他方法。

编辑:你的“质量信息系统”到底怎么了?显然它不喜欢我使用标签“转义”和/或“信息”。

+0

您应尽量避免在句子中使用很多(长)括号,这会打破流程并使其难以阅读。谢谢! – timss 2013-04-20 03:22:03

回答

0

嗯,很难说,尝试sendAndLoad代替的loadVariables

例如:

var result_lv:LoadVars = new LoadVars(); 
var send_lv:LoadVars = new LoadVars(); 
send_lv.variable1=value1; 
send_lv.variable2=value2; 

    f=this;//zachytka 

result_lv.onLoad = function(success:Boolean) { 
    if (success) { 
trace("ok"); 
    } else { 
    trace("error"); 
    } 

}; 

send_lv.sendAndLoad("http://127.0.0.1/Tools/indata.php", result_lv, "GET"); //you may also use POST 

这应该工作。它不工作的原因也可能是闪存安全设置。尝试将内容移动到真实服务器或打开flash settings manager(还有一个alternative online version),并将127.0.0.1添加到受信任域和/或测试文件位置到受信任位置(我使用C:*)

相关问题