aardio中怎么获取拖入文件的小图标显示到界面然后保存到本地?

已解决  已打赏  
Admin Admin  悬赏: 5 金币
发布:2018-05-05 16:30:31 分类:问答
下面的代码只能获取到point类型的数据,求教高手怎么获取到拖入的任意文件的16*16的小图标并保存?
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=573;bottom=352;acceptfiles=1)
winform.add(
button={cls="button";text="保存16*16的ico图标到硬盘";left=25;top=155;right=220;bottom=199;z=2};
plus={cls="plus";left=27;top=82;right=85;bottom=137;edge=1;z=1};
static={cls="static";text="拖入任何类型文件/文件夹/程序/文档/快捷方式,获取它的16*16图标";left=113;top=91;right=547;bottom=134;transparent=1;z=3}
)
/*}}*/

import win.imageList;
import console;

winform.wndproc = function(hwnd,message,wParam,lParam){
select( message ) {
//拖入文件(exe程序/文件夹/文档/快捷方式等)
case 0x233/*_WM_DROPFILES*/{
shImageList = win.imageList.shell( 1)

//console.varDump(shImageList.getIcon(1,1/*_ILD_TRANSPARENT*/))

var ico = shImageList.getIcon(1,1/*_ILD_TRANSPARENT*/);//返回的是point类型数据
winform.plus.background = ico//.copyHandle()
console.varDump(ico)
}
}
//无返回值则继续调用默认回调函数
}

winform.show()
win.loopMessage();
  • 泽越止 泽越止    被采纳
    Time:2018-05-05 17:39:33

    import win.ui;

    /*DSG{{*/

    var winform = win.form(text="aardio form";right=573;bottom=352;acceptfiles=1)

    winform.add(

    button={cls=
    "button";text="保存16*16的ico图标到硬盘";left=25;top=155;right=220;bottom=199;z=2};

    plus={cls=
    "plus";left=27;top=82;right=85;bottom=137;edge=1;z=1};

    static={cls=
    "static";text="拖入任何类型文件/文件夹/程序/文档/快捷方式,获取它的16*16图标";left=113;top=91;right=547;bottom=134;transparent=1;z=3}

    )

    /*}}*/



    import win.imageList;

    import fsys.info;

    import fsys.info;

    import console;

    import gdip.bitmap;



    var lst = win.imageList.shell( 1);



    var file;

    winform.onDropFiles = 
    function(files){

        file = fsys.info.get(files[1],0x10
    /*_SHGFI_USEFILEATTRIBUTES*/ | 0x4000/*_SHGFI_SYSICONINDEX*/);

        lst.draw( file.iIcon, ::GetDC(winform.plus.hwnd), 0, 0,1
    /*_ILD_TRANSPARENT*/);

    }

    winform.button.oncommand = 
    function(id,event){

        
    if(file){

            
    var bmp = gdip.bitmap(16,16);

            
    var dc = bmp.getGraphics().getDc();

            lst.draw( file.iIcon,dc, 0, 0,0
    /*_ILD_NORMAL*/);

            bmp.getGraphics().releaseDc(dc);

            bmp.save(
    "c:\test.png");

        }

        

    }



    winform.show() 

    win.loopMessage();

  • Admin Admin    
    Time:2018-05-05 19:39:10
    已发十根火腿肠的微信红包答谢.欢迎各位码友踊跃作答,红包雨下个不停.
  • Admin Admin    
    Time:2018-05-05 19:49:29
    kio1同学也贡献了一种方法,比较简洁,但缺点是背景是灰色,不怎么知道弄成透明背景的png.同样感谢,发上来供大家交流学习:
    //获取文件图标
    import win.ui;
    /*DSG{{*/
    var winform = win.form(text="aardio form";right=573;bottom=352;acceptfiles=1)
    winform.add(
    button={cls="button";text="保存16*16的ico图标到硬盘";left=25;top=155;right=220;bottom=199;z=2};
    plus={cls="plus";left=27;top=82;right=85;bottom=137;edge=1;repeat="center";z=1};
    static={cls="static";text="拖入任何类型文件/文件夹/程序/文档/快捷方式,获取它的16*16图标";left=113;top=91;right=547;bottom=134;transparent=1;z=3}
    )
    /*}}*/

    import fsys.info
    import win.imageList
    import gdip.bitmap
    winform.onDropFiles = function(files){
    var sfi = fsys.info.get(files[1], 0x200/*_SHGFI_DISPLAYNAME*/ | 0x4000/*_SHGFI_SYSICONINDEX*/);
    var handle = win.imageList.shell( 1 ).getIcon(sfi.iIcon)//0/*_SHIL_LARGE*/ 是32*32 ;1是16*16
    winform.plus.setBackground(gdip.bitmap(handle,1).copyHandle())
    }

    winform.button.oncommand = function(id,event){
    winform.plus.background.save("C:\Users\Administrator\Desktop\test.png",100)
    }

    winform.show()
    win.loopMessage();

  • Admin Admin    
    Time:2018-05-05 20:04:55
    kio1同学终于把它弄成透明背景的png了,可喜可贺:
    //获取文件图标
    import win.ui;
    /*DSG{{*/
    var winform = win.form(text="aardio form";right=573;bottom=352;acceptfiles=1)
    winform.add(
    button={cls="button";text="保存16*16的ico图标到硬盘";left=25;top=155;right=220;bottom=199;z=2};
    plus={cls="plus";left=27;top=82;right=85;bottom=137;edge=1;repeat="center";z=1};
    static={cls="static";text="拖入任何类型文件/文件夹/程序/文档/快捷方式,获取它的16*16图标";left=113;top=91;right=547;bottom=134;transparent=1;z=3}
    )
    /*}}*/

    import console;

    import fsys.info
    import win.imageList
    import gdip.bitmap
    winform.onDropFiles = function(files){
    var sfi = fsys.info.get(files[1], 0x200/*_SHGFI_DISPLAYNAME*/ | 0x4000/*_SHGFI_SYSICONINDEX*/);
    var handle = win.imageList.shell( 1 ).getIcon(sfi.iIcon)//0/*_SHIL_LARGE*/
    winform.plus.setBackground(gdip.bitmap(handle,1).saveToBuffer(".png"))
    }

    winform.button.oncommand = function(id,event){
    winform.plus.background.save("C:\Users\Administrator\Desktop\test.png",80)
    }

    winform.show()
    win.loopMessage();

[ 发单/接单 ]
换IP投票软件
PC蛋蛋自动挂机投注
新浪微博发微博显示尾巴的方法,比如显示来自iphone 7
百度文库批量自动上传软件
一点资讯app刷阅读量/评论/收藏/订阅功能/手机号注册
定做一个阿迪达斯官网注册器(需要破点击文字式验证码)
定制人人网自动注册/修改资料/采集/私聊软件
酷狗繁星直播网页协yi
YY多功能刷订阅刷粉丝
滑块验证码本地识别
狼人杀POST QQ登录注册 获取金币数量
做个贴吧发发帖的软件懂的来
今日头条账号保存cookie
抖音粉丝软件定做,只要粉丝
百家号自媒体发文软件定制
哔哩哔哩播放量
读取TB某个商品上架时间和相关信息
网易博客软件定制
定制天涯论坛发帖软件
定制今日头条批量自动发私信软件
[ 站内搜索 ]
[ 最近热帖 ]
万能助手 -- 扩展库大全集 13752
用aardio创建web工程图文讲解(1) 12842
电脑编程入门自学:Fiddler https 抓包时提示创建根证书不成功问题彻底解决(https插件dll方式) 11744
aardio绘图演示 11413
通过chrome.dll中间件控制外部chrome浏览器 10127
我常用的aardio技巧 9775
《边学C语言边赚钱——简码编程入门教程》系列集合 9617
aardio使用http或whttp进行get/post请求时经常cookies失效怎么办?__电脑计算机编程入门教程自学 9323
[源码下载]简码视频加密解密播放工具个人版v1.0发布,永久免费开源的知识变现神器 8557
python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学 8048
编程入门教程:aardio批量上传文件并显示进度条 7883
aardio调用nodejs的ws模块做一个简单的聊天通信示例 7037
电脑计算机编程入门教程自学:原生JavaScript判断字符是否为A-Za-z英文字母 6908
电脑计算机编程入门教程自学:腾讯tx或极验geetest滑块按住拖动完成拼图验证成功破解思路及源码 6501
乐玩插件AARDIO调用 6087
[ 近期热答 ]
电脑计算机编程入门教程自学:什么是buffer缓冲区? 1
aardio_代码编辑框书签管理器开源 1
aardio_怎么用ide库从代码编辑框中取出指定行的源码? 1
aardio_codepage代码页编码乱码暴力猜解工具 1
aardio内嵌echarts图表添加鼠标事件响应功能 2
aardio列表框listbox_模糊查找和精确查找 1
8亿QQ绑定手机泄露:通过腾讯QQ号查询QQ绑定的手机号码漏洞! 1
carl listviewex调用例子----------源码搬运工 2
Aardio内嵌Electron浏览框怎么正确添加启动参数? 1
Aardio取汉字的字节数或字符数 1
怎么实现mssql图片数据的读写 2
aardio_从49个数字里选六个和值为150的不重复的数字 1
在嵌入wps的时候,多了一个 透明的边框,这个怎么消除它 1
万能助手入门帮助教程:学会科学地管理工作文件 1
Aaardio开发内嵌Electron浏览框放服务器上无法下载组件的解决办法 1