Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash Приложения: AIR, Zinc и тд. (http://www.flasher.ru/forum/forumdisplay.php?f=94)
-   -   Как с помощью AIR программно выключить компьютер (http://www.flasher.ru/forum/showthread.php?t=172007)

HardCoder 29.11.2011 21:01

Как с помощью AIR программно выключить компьютер
 
Здравствуйте. Сабж. Есть идеи?

Aquahawk 29.11.2011 21:05

есть экзешники выключалки, принести с собой и вызвать через nativeProcess. Есть подозрения что потребуются права админа.

goodguy 29.11.2011 21:08

экзешники? ) Это можно сделать простым батником (который можно из той же эйр и создать) с текстом shutdown -s или через коммандную строку. Подозревается мне, что эйр в этом ограничен.
На счет прав админа, эт да. Даже винда "сама себе" без прав админа не даст вырубить комп через батник

HardCoder 29.11.2011 21:57

Спасибо за информацию. Батник нормально создается, при запуске из проводника комп вырубается. А вот как его запустить (не открыть) из air?
Код AS3:

var f:File = new File("D:\\shut_down.bat");
var fs:FileStream = new FileStream();
fs.open(f, FileMode.WRITE);
fs.writeUTFBytes("shutdown -s");
fs.close();
f.openWithDefaultApplication();

При этом выдает:
Цитата:

Error #3001: File or directory access denied.

goodguy 29.11.2011 22:29

эйр не может их запускать, полюбому нужны другие языки
http://stackoverflow.com/questions/6...-not-supported

trng 30.11.2011 02:54

Вот так я запускал mxmlc из под air-приложения:
Код AS3:

if (NativeProcess.isSupported) {
                        var file:File = File.applicationDirectory;
                        file = file.resolvePath("file:///C:/Program Files/Adobe/Adobe Flash Builder 4/sdks/4.0.0/bin/mxmlc.exe");
                        var args:Vector.<String> = new Vector.<String>();
                        var s: String;
                        args[0] = "-load-config+=C:/work/Proba/mxmlcconf.xml";
                        args[1] = "-define=NAMES::MD5fileName,'"+md5fn+"'";
                        args[2] = "-o";
                        s = fname+'-pub.swf';
                        args[3] = s;
                        args[4] = "C:/work/Proba/as3proj.as";
 
                        var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
                        nativeProcessStartupInfo.arguments = args;
                        nativeProcessStartupInfo.executable = file;
 
                        nativeProcessStartupInfo.workingDirectory = File.applicationDirectory;
                        var process = new NativeProcess();
                        process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData);
                        process.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, onErrorData);
                        process.addEventListener(NativeProcessExitEvent.EXIT, onExit);
                        process.addEventListener(IOErrorEvent.STANDARD_OUTPUT_IO_ERROR, onIOError);
                        process.addEventListener(IOErrorEvent.STANDARD_ERROR_IO_ERROR, onIOError);
 
                        process.start(nativeProcessStartupInfo);
}

Попробуй вместо mxmlc.exe поставить cmd.exe c аргументами:
/c reboot.bat

Должно работать.

goodguy 30.11.2011 07:34

mxml - это скрипт (если вообще можно так сказать), не способный нанести вреда компьютеру, batch файл - совсем другое дело. Их использование в эйр специально ограничено.

alexcon314 30.11.2011 08:41

goodguy, ты, часом, не мудришь? ссылку про ограничения на батники покажи.
Без батника надо просто запустить cmd с параметрами:
cmd.exe /c shutdown -s
А вот и способ запустить "другой язык" из айра:
http://www.adobe.com/devnet/air/flex...e_process.html
Соответственно, вместо "Windows/bin/echoTestWin.exe ставим cmd. Ну, и поправку на маки сделать, если что. Правда, за них (за маки) не скажу, как выключить :D.
Вот еще: http://help.adobe.com/en_US/as3/dev/...ad8a-8000.html
И еще: http://www.flexpasta.com/index.php/2...ion-in-air-20/

goodguy 30.11.2011 09:15

Цитата:

goodguy, ты, часом, не мудришь? ссылку про ограничения на батники покажи.
дык, по твоей же ссылке
http://help.adobe.com/en_US/as3/dev/...ad8a-8000.html
(конкретно по батч файлам):
Цитата:

Security considerations for native process communication

AIR on Windows does not allow you to run .bat files directly. The command interpreter application (cmd.exe) executes Windows .bat files. When you invoke a .bat file, this command application can interpret arguments passed to the command as additional applications to launch. A malicious injection of extra characters in the argument string could cause cmd.exe to execute a harmful or insecure application. For example, without proper data validation, your AIR application may call myBat.bat myArguments c:/evil.exe. The command application would launch the evil.exe application in addition to running your batch file.
на stackoverflow видел несколько подобных тем, так и не разрешенных
но на счет cmd наверное ты прав, хз, лично не проверял

alexcon314 30.11.2011 10:01

Код AS3:

package 
{
        import flash.desktop.NativeProcess;
        import flash.desktop.NativeProcessStartupInfo;
        import flash.display.Sprite;
        import flash.filesystem.File;
 
        public class Main extends Sprite
        {
 
                public function Main():void
                {
                        var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
                        nativeProcessStartupInfo.executable = new File("C:\\WINDOWS\\system32\\cmd.exe");
                        var processArgs:Vector.<String> = new Vector.<String>();
                        processArgs[0] = "/c shutdown -s";
                        nativeProcessStartupInfo.arguments = processArgs;
                        nativeProcessStartupInfo.workingDirectory = File.desktopDirectory;
                        var process:NativeProcess = new NativeProcess();
                        process.start(nativeProcessStartupInfo);
                }
 
        }
 
}

так попробуйте.
Цитата:

AIR on Windows does not allow you to run .bat files directly.
Точно, есть такое дело.
На фоне примера выше, выглядит как-то странно. cmd с параметрами - пожалуйста, а батник - ни-ни. Фигня какая-то.


Часовой пояс GMT +4, время: 23:05.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.