11RIA 闪客社区 - 最赞 Animate Flash 论坛

搜索
查看: 2156|回复: 6
上一主题 下一主题

[已解决悬赏] AS3关闭EXE的方法?

[复制链接] TA的其它主题
发表于 2019-4-22 20:32:33 | 显示全部楼层 |阅读模式
65银子
我们知道AS3可以打开其他EXE应用程序,但是不知道有没有方法可以把打开的EXE关闭掉?

最佳答案

查看完整内容

有个swc,“AirUtils.swc”,安排的明明白白; 导swc不用讲了,自己搞; 用法很简单: import com.plter.air.windows.utils.NativeCommand; import com.plter.air.windows.utils.ShowCmdWindow; killJingCheng("WinFormPPTServer"); private function killJingCheng(name:String):void { var args:Vector.=new Vector.; var str:String = "taskkill /im "+ name+".exe" +" /f"; args.push(str); ...
发表于 2019-4-22 20:32:34 | 显示全部楼层
本帖最后由 xxdmx712 于 2019-4-23 10:18 编辑

有个swc,“AirUtils.swc”,安排的明明白白;
导swc不用讲了,自己搞;
用法很简单:
import com.plter.air.windows.utils.NativeCommand;
import com.plter.air.windows.utils.ShowCmdWindow;

killJingCheng("WinFormPPTServer");

private function killJingCheng(name:String):void
{
        var args:Vector.<String>=new Vector.<String>;
        var str:String = "taskkill /im "+ name+".exe" +" /f";
        args.push(str);
        try
        {
                var _cmdNa:NativeCommand = new NativeCommand();
                _cmdNa.runCmd(args,ShowCmdWindow.HIDE);
        }
        catch(error:Error)
        {
                                
        }
}
该swc上传到网盘了,自己下。
并且这个swc还有别的好多西,你也可以看看。
链接:https://pan.baidu.com/s/1iEsEPG6Twzxij8RGAtd-dQ
提取码:zaxe

补充:同楼上general_clarke大神补充。

回复

使用道具 举报

发表于 2019-4-22 22:13:36 | 显示全部楼层
cmd 应该可以,不过找到对应的进程编号是个麻烦的事情。

当然如果进程比较特殊,估计比较好识别!

https://jingyan.baidu.com/article/215817f7b477e61edb142377.html

评分

参与人数 2银子 +20 收起 理由
wuliao2014 + 10 11RIA 大神就是大神,佩服佩服
general_clarke + 10 值得一试,容洒家研究一二

查看全部评分

回复

使用道具 举报

发表于 2019-4-23 05:01:43 | 显示全部楼层
只能关闭自己通过NativeProcess打开的exe程序。
无法关闭通过openWithDefaultApplication间接打开的
或者其他应用程序

具体办法

  1. var process:NativeProcess = new NativeProcess;
  2. process.start(info);//开启一个exe进程,地址在info中
  3. .........
  4. process.exit();//退出
复制代码


上述调用exit时,被调用exe可能积极拒绝导致无法关闭,这种现象对多数应用不存在。
另AIR程序被关闭时AIR启动的NativeProcess也会被关闭

如果写过start后下一行就是exit,
刚start的进程可能无法立刻被exit,需要完全初始化
回复

使用道具 举报

发表于 2019-4-23 05:22:44 | 显示全部楼层
本帖最后由 general_clarke 于 2019-4-23 05:27 编辑

就T大提供资料实际测试,发现是可行思路。

具体代码

  1. var info:NativeProcessStartupInfo = new NativeProcessStartupInfo();
  2.                         info.executable = new File("C:/Windows/system32/cmd.exe");
  3. info.arguments = new <String>["/c", "tasklist"]
  4. var nativeProcess:NativeProcess = new NativeProcess();
  5. nativeProcess.addEventListener(NativeProcessExitEvent.EXIT, onExit);
  6. nativeProcess.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutput);
  7. nativeProcess.start(info);

  8. public var buffer:ByteArray = new ByteArray;
  9. protected function onOutput(event:ProgressEvent):void
  10. {
  11.         var pro:NativeProcess = event.target as NativeProcess;
  12.         pro.standardOutput.readBytes(buffer, 0, pro.standardOutput.bytesAvailable)
  13. }               
  14.                
  15. public function onExit(e:*):void{
  16.         var str:String = buffer.readMultiByte(buffer.length, "ANSI");
  17.         trace(str);
  18. }
复制代码


使用上文代码,
最后得到的str就是本机所有进程列表
类似下文形式

  1. 360se.exe                     3792 Console                   10     50,920 K

  2. 360se.exe                     6556 Console                   10    112,404 K

  3. 360se.exe                     8488 Console                   10     29,568 K

  4. audiodg.exe                   4980 Services                   0     20,208 K

  5. SearchProtocolHost.exe       14124 Services                   0     11,412 K

  6. wpscenter.exe                12968 Console                   10      2,628 K

  7. explorer.exe                  9452 Console                   10     73,296 K
复制代码


根据这个列表字符串稍加处理可以得到进程名字和对应PID

参考2楼链接的命令,
用和上面相同的办法再调用一次cmd即可消灭进程
回复

使用道具 举报

发表于 2019-4-23 05:24:52 | 显示全部楼层
补充,
使用上述代码,
必须在app-xml内设置下面参数

  1. <supportedProfiles>extendedDesktop</supportedProfiles>
复制代码

以及编译器参数的-swf-version适当调高
回复

使用道具 举报

发表于 2019-4-23 09:16:47 | 显示全部楼层
既然是exe,就可以藉助其他語言來實現開啟和關閉exe
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)



快速回复 返回顶部 返回列表