Просмотр полной версии : Автоматическая запись данных на usb
Доброго времени суток.
Подскажите, как реализовать запись определённых данных (определяется приложением) на вставленный usb носитель автоматически(без действий пользователя). Так как флеш ограничен правами "тихой" работы (почти всеми), то можно ли к примеру с помощью флеш в внешнем текстовом документе хранить название файла, который нужно записать, и записывать его автоматически на вставленный usb-накопитель другой прогой?
С помощью какой программной среды это лучше (или хотя бы можно) реализовать.
Спасибо.
З.Ы: Это не создание вредоносной программы.
Aquahawk
05.09.2013, 12:17
Если это air приложение то сможете и сами записать, а если веб версия, то нет, никак. Т.е. совсем не понятно что вы хотите, т.к. если какой-то программой что-то писать то это значит надо заставить пользователя скачать и поставить эту программу, тогда проще изначальную задачу на air решить.
Суть задачи:
В коридоре стоит информационный киоск с расписанием и другой информацией (приложние сделано в флеш).
К примеру, в очередной раз поменялось расписание обучения или другая инфа. И нужно, чтоб родитель, студент или абитуриент вставил флешку в компьютер и автоматически на неё сохранилось новая информация, как только студент зашёл на соответствующую страницу или вставил флешку находясь на странице расписания.
Раньше это делалось через FileRefrence при нажатии кнопки, что открывало проводник и соответственно открывало дыру для недобросовестных человечков. Пробовал запускать внешний bat при переходе на страницу расписания, но возникли проблемы с определением и наличием устройства.
Было велено дыры залатать - вот и думаю.
Sweet07,
Для нормальной работы с файловой системой, вам нужно сделать AIR или MDM Zinc приложение. Оба по сути расширяют возможности флешки как настольного приложения.
Если это киоск, то скорей всего там эйр и есть.
Записать можно просто через File.
http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/filesystem/File.html
Немного поискал и нашёл это: http://www.slideshare.net/JosephLabrecque/whats-new-in-flash-player-112-and-adobe-air-32
всем спасибо.
Ralph_DiMarko
05.09.2013, 19:37
Зря вы не обратили внимание на сообщение об zinc-e, достаточно мощная штука и проста в интеграции.
Я поступил таким способом:
package {
import flash.display.MovieClip;
import flash.filesystem.File;
import flash.filesystem.FileStream;
import flash.events.ProgressEvent;
import flash.events.IOErrorEvent;
import flash.net.FileReference;
import flash.filesystem.*;
import flash.events.*;
public class Main extends MovieClip {
private var volumes:Vector.<StorageVolume> = new Vector.<StorageVolume>;
private var currFile:String="Project.swf";
public function Main() {
volumes = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes();
for (var i:int = 0; i < volumes.length; i++){
if (volumes[i].isRemovable) {
//trace(volumes[i].name, volumes[i].rootDirectory.nativePath);
//copyFile(volumes[i].rootDirectory.nativePath,"Project.swf");
}
}
trace("вставьте usb-носитель");
StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_MOUNT, onVolumeMount);
StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_UNMOUNT, onVolumeUnmount);
}
private function copyFile(loc:*,fStr:String):void{
//trace(loc,fStr);
var file:File = File.applicationDirectory.resolvePath(fStr);
var newFile:File = File.userDirectory.resolvePath(loc+"/"+fStr);
file.addEventListener(Event.COMPLETE, fileCopyCompleteHandler);
file.addEventListener(IOErrorEvent.IO_ERROR, fileCopyIOErrorEventHandler);
file.copyToAsync(newFile, true);
}
private function fileCopyCompleteHandler(event:Event):void {
trace("Готово. Для продолжения работы извлеките usb-носитель. //"+event.target); // [object File]
}
private function fileCopyIOErrorEventHandler(event:IOErrorEvent):void {
trace("Ошибка копирования. Для продолжения работы извлеките usb-носитель");
}
private function onVolumeMount(event:StorageVolumeChangeEvent):void {
if (event.storageVolume.isRemovable) {
trace("Removable");
copyFile(event.rootDirectory.nativePath,currFile);
} else {return}
}
private function onVolumeUnmount(event:StorageVolumeChangeEvent):void {
trace(event.rootDirectory.nativePath);
trace("Для копирования документа вставьте usb-носитель");
}
}
}
Довольно интересно получилось.
По презентации - не ту ссылку кинул.
Если кому нужно:
1. Что нового в Adobe AIR
2. Что нового в Flash Player 11
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.