zoukankan      html  css  js  c++  java
  • Flex【原创】Air调用本地exe文件完成截图功能

    Air调用本地exe文件完成截图功能

     

      这里调用本地exe完成截图功能,主要包括2个知识点:一是如何调用本地exe文件(其实这是桌面平台的本地功能调用的一种,例如除exe调用之外还可以调用python等文件,会在后面文章里面进行讲解)、二是从系统剪贴板取位图数据。

      1. demo结构

      

     

      2. ScreenShot类,封装本地调用接口

    package 
    {
        import flash.desktop.Clipboard;
        import flash.desktop.ClipboardFormats;
        import flash.desktop.NativeProcess;
        import flash.desktop.NativeProcessStartupInfo;
        import flash.display.BitmapData;
        import flash.events.Event;
        import flash.events.EventDispatcher;
        import flash.events.NativeProcessExitEvent;
        import flash.filesystem.File;
        
        public class ScreenShot extends EventDispatcher
        {
            public static const SHOT_COMPLETE:String = "shot_complete";
            private var _shotCompleteEvent:Event = null;
            private var _file:File = null;
            private var _nativeProcessStartupInfo:NativeProcessStartupInfo = null;
            private var _process:NativeProcess = null;
            private var _bitmapData:BitmapData = null;
            
            public function ScreenShot():void
            {
                _file = File.applicationDirectory.resolvePath("SnapShot.exe");
                _nativeProcessStartupInfo = new NativeProcessStartupInfo();
                _nativeProcessStartupInfo.executable = _file;
                _process = new NativeProcess();
                _shotCompleteEvent = new Event(SHOT_COMPLETE);
            }
            
            public function shot():void
            {
                _process.start(_nativeProcessStartupInfo);
                _process.addEventListener(NativeProcessExitEvent.EXIT,onExit); 
            }
            
            private function onExit(e:NativeProcessExitEvent):void
            {
                if (Clipboard.generalClipboard.hasFormat(ClipboardFormats.BITMAP_FORMAT))
                {
                    _bitmapData = Clipboard.generalClipboard.getData(ClipboardFormats.BITMAP_FORMAT) as BitmapData;
                    dispatchEvent(_shotCompleteEvent);
                }
            }
            
            public function get bitmapData():BitmapData
            {
                return _bitmapData ? _bitmapData as BitmapData : null;
            }
            
        }
    }

      3.demo测试类:

    <?xml version="1.0" encoding="utf-8"?>
    <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                           xmlns:s="library://ns.adobe.com/flex/spark" 
                           xmlns:mx="library://ns.adobe.com/flex/mx"
                           applicationComplete="applicationCompleteHandler(event)">
        <fx:Script>
            <![CDATA[
                import mx.events.FlexEvent;
                private var ss:ScreenShot = new ScreenShot();
                
                protected function applicationCompleteHandler(event:FlexEvent):void
                {
                    stage.addEventListener(KeyboardEvent.KEY_DOWN, onKDown);
                    ss.addEventListener(ScreenShot.SHOT_COMPLETE,onComplete);
                }
                
                protected function openExe_clickHandler(event:MouseEvent):void
                {
                    ss.shot();
                }
                
                private function onKDown(e:KeyboardEvent):void {
                    if (e.altKey && e.ctrlKey && e.keyCode == 65) {
                        ss.shot();
                    }
                }
                
                protected function onComplete(event:Event):void
                {
                    bimg.source = ss.bitmapData;
                }
                
            ]]>
        </fx:Script>
        <s:HGroup>
            <s:Button id="openExe" label="openExe" click="openExe_clickHandler(event)"/>
            <s:BitmapImage id="bimg"/>
        </s:HGroup>
    </s:WindowedApplication>

      

      4. 效果截图

       

       demo源码下载地址:

          https://files.cnblogs.com/loveFlex/FlexAir%E8%B0%83%E7%94%A8%E6%9C%AC%E5%9C%B0exe%E6%96%87%E4%BB%B6.rar

  • 相关阅读:
    两个数据库比较 对比视图存储过程及表结构差异
    导入/导出Excel
    比较两个数据库的表结构差异
    根据当月数据库自动生成下个月数据库--3
    根据当月数据库自动生成下个月数据库--2
    根据当月数据库自动生成下个月数据库--1
    ubuntu 分屏工具
    ubuntu 分屏工具
    中英文对照 —— 色彩的描述
    中英文对照 —— 色彩的描述
  • 原文地址:https://www.cnblogs.com/loveFlex/p/3080322.html
Copyright © 2011-2022 走看看