ActiveX实现hta程序文件拖放支持

利用 ActiveX 实现hta程序 文件拖放支持, 效果如图:

dropFile1_3.gif

 

chenDropFile.ocx  示例程序 和 源码下载:


http://pan.baidu.com/share/link?shareid=469726&uk=570567929#dir/path=%2Fhta

chenDropFile 解压密码 yurenchen

 


/* MFC ActiveX 使用笔记:

①类 成员变量,成员函数,事件处理函数 在 CxxxCtrl 类向导中添加

②ActiveX 接口函数 在 _Dxxx 右键 > 添加 > 添加方法 添加

③ActiveX 派发事件 在 CxxxCtrl 右键 > 添加 > 添加事件 添加



每次编译完 ocx IDE总是自动执行 regsvr32, 但又没权限,总是提示出错,

解决办法:

	a. 以管理员权限 运行 VS

	b. 工程属性 > 链接器 > 注册输出 => 否


										yurenchen 2014.1.30
										*/


 


================
一. 接口说明:

----------
■ chenDropFile 【ActiveXObject】
[属性]
    颜色只支持 数值, 背景色 为0表示透明
    text='拖放文件到此';//文字内容 (拖放文件时显示)
    fontWeight=100;     //文字粗细 (100~900)
    fontColor=0xff0033; //文字颜色
    fontBgColor=0;      //文字背景色, 0表示 透明
    fontSize=30;        //文字大小
    fontFamily='宋体';  //字体
    bgColor=0;          //控件背景颜色, 0表示 不重绘背景(模拟透明效果)
[方法]
    getFileCount()      //获得 拖放 文件数量(int)
    getFile(int index)  //获得 第 index 个文件 的路径
[事件]
    dropFiles(int count)//拖放文件时产生此事件

----------
■ chenDropManager 【创建 ActiveXobject 并 管理拖放事件】
[方法]
    init()                      //创建 chenDropFile
    attachDropEvent(htmlObj)    //给htmlObj 添加 文件拖放支持
    detachDropEvent(htmlObj)    //给htmlObj 解除 文件拖放支持

----------
■ onDropFiles(fileCount)    【文件拖放 事件 回调函数】


================
二. 使用步骤:
    开发时:
    0. 引入 chenDropFile.js 脚本
    1. chenDropManager.init();
    2. chenDropManager.attachDropEvent(htmlObj)
    3. 实现 onDropFiles(fileCount) 回调函数

    运行时:
        运行 reg.bat   注册 ocx 控件
    卸载:
        运行 reg_u.bat 解除 ocx 注册


================
demo:
    1.初步测试(插入object到hta程序,查看效果)
    2.背景透明(利用object隐藏到显示切换时 不绘制背景(ActiveX中也去掉背景绘制代码) 实现背景透明, 但ActiveX在页面中 仍有z-index bug )
    3.绑定 htmlObj (object平时处于隐藏状态,利用 htmlObj的 ondragenter事件 时 显出object 以便接受 文件拖放, 实现 更好的 控件隐藏, 规避z-index bug  )
    4.模块封装 (将 html代码 封装到 js 对象中, 使用时 只需要简单 初始化 即可实现任意 htmlObj 接受文件拖放)
                                                yurenchen 2014

标签: javascript hta MFC ActiveX

已有 6 条评论 »

  1. yurenlee yurenlee

    靠,桌面一直没有整理过哇!

    1. 这域名你居然记得, yurenchen.com 还没备案,所以 不能绑定..
      -------
      进的以前的系统 做兼容性测试,顺便录了gif

  2. xp之后的系统有方法不注册

    1. itianda 酱..

      是指这里这种方法么?
      http://tieba.baidu.com/p/2846390847?pid=49677887863#49677887863

      还是指在 exe 里调用dll 通过manifest免注册的方法?(这种方法我发现没法应用到 hta 文件)

  3. huhu huhu

    如果安装了ie10+就不需要ActiveX了,用

    document.ondragleave=function(e){e.preventDefault();}
    document.ondrop=function(e){e.preventDefault();}
    document.ondragenter=function(e){e.preventDefault();}
    document.ondragover=function(e){e.preventDefault();}

    addEventListener("drop",function(e){e.preventDefault();/*处理拖放来的文件*/},false);

    1. huhu huhu

      还要head指定使用ie10
      meta http-equiv="X-UA-Compatible" content="IE=10"

添加新评论 »

贴图表情