我得到了一個應用程序,該應用程序爲其接口使用了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");
沒有按在所有要麼將不起作用,記錄器的輸出只是begin
和socket sent
註釋:記錄儀是由人從koreanrandom.org創建並依賴於他們的杜坎實現,這從來沒有引起藍屏我。雖然我的執行過程中沒有發現我的錯誤,所以我開始尋找解決我的問題的其他方法。
編輯:你的「質量信息系統」到底怎麼了?顯然它不喜歡我使用標籤「轉義」和/或「信息」。
您應儘量避免在句子中使用很多(長)括號,這會打破流程並使其難以閱讀。謝謝! – timss 2013-04-20 03:22:03