开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 10546|回复: 40
收起左侧

[易语言纯源码] SendMessage发送拖拽消息 Unicode和ANSIC的文件

[复制链接]
发表于 2018-1-17 15:32:47 | 显示全部楼层 |阅读模式   广东省揭阳市
分享源码
界面截图: -
是否带模块: 纯源码
备注说明: -
124_305584_b915108470357bf.png

上次有需要的时候半天没找到这方面的易语言源码


然后今天就写了一个 支持Unicode和ANSIC的文件名 具体看你需要怎么用吧




原作者:易编程

发送拖拽消息_A&W.e

9.72 KB, 下载次数: 658, 下载积分: 精币 -2 枚

评分

参与人数 2好评 +2 精币 +3 收起 理由
学易未精 + 1 + 3 YYDS~!
花老板 + 1 奉上小小红包希望笑纳

查看全部评分


头像被屏蔽
结帖率:95% (21/22)
发表于 2018-1-17 15:53:43 | 显示全部楼层   浙江省温州市
这个好像有点用 下载收藏一下
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)
发表于 2018-1-17 17:19:02 | 显示全部楼层   山东省德州市
分享原码了  !
回复 支持 反对

使用道具 举报

发表于 2018-1-17 17:29:57 | 显示全部楼层   江苏省扬州市
谢谢分享啊
回复 支持 反对

使用道具 举报

签到天数: 9 天

发表于 2018-1-17 18:53:11 | 显示全部楼层   广东省东莞市
谢谢分享啊
回复 支持 反对

使用道具 举报

结帖率:63% (5/8)

签到天数: 13 天

发表于 2018-1-17 19:51:05 | 显示全部楼层   重庆市重庆市
        奉上小小红包希望笑纳
回复 支持 反对

使用道具 举报

结帖率:63% (5/8)

签到天数: 13 天

发表于 2018-1-17 19:51:20 | 显示全部楼层   重庆市重庆市

这个好像有点用 下载收藏一下
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 1 天

发表于 2018-1-17 23:02:17 | 显示全部楼层   江苏省连云港市
本帖最后由 阿婆 于 2018-1-17 23:06 编辑

我来跟个贴,顺便纠正你的一个小BUG,详见数据结构注释fWide
  
子程序名返回值类型公开备 注
WinDropFile逻辑型 拖拽文件到指定窗口
参数名类 型参考可空数组备 注
hWnd整数型窗口句柄
sFile文本型文件路径
UseAnsi逻辑型默认真:Ansi  假:Unicode
变量名类 型静态数组备 注
ProcessId整数型 
hProcess整数型 
Buffer字节集 
hAddress整数型 
lenBuffer整数型 
lenWrite整数型 
' typedef struct _DROPFILES {
' DWORD pFiles; 结构大小20
' POINT pt; 0,0
' BOOL  fNC; 0
' BOOL  fWide; 0表示ansi 1表示unicode
' } DROPFILES, *LPDROPFILES;
UseAnsi = 选择 (是否为空 (UseAnsi), 真, UseAnsi)
GetWindowThreadProcessId (hWnd, PtrInt (ProcessId))  ' 窗口句柄获取进程ID
如果真 (ProcessId ≤ 0)
返回 ()

如果 (UseAnsi)
Buffer = { 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }到字节集 (sFile)
Buffer = AnsiToUnicode (sFile)  ' A2W
Buffer = 取字节集左边 (Buffer, 取字节集长度 (Buffer) - 2)  ' 删除Unicode结尾
Buffer = { 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } + Buffer

lenBuffer = 取字节集长度 (Buffer)
hProcess = OpenProcess (位或 (8, 32), 0, ProcessId)
hAddress = VirtualAllocEx (hProcess, 0, lenBuffer, 4096, 4)
WriteProcessMemory (hProcess, hAddress, PtrBin (Buffer), lenBuffer, PtrInt (lenWrite))
如果真 (lenWrite ≠ lenBuffer)
返回 ()

如果 (UseAnsi)
SendMessageA (hWnd, #WM_DROPFILES, hAddress, 0)
SendMessageW (hWnd, #WM_DROPFILES, hAddress, 0)

VirtualFreeEx (hProcess, hAddress, 0, #MEM_RELEASE )
CloseHandle (hProcess)
返回 ()




回复 支持 反对

使用道具 举报

结帖率:80% (8/10)
发表于 2018-1-17 23:58:19 | 显示全部楼层   广西壮族自治区来宾市
新技能已get√
回复 支持 反对

使用道具 举报

结帖率:75% (3/4)

签到天数: 14 天

发表于 2018-1-18 13:49:29 | 显示全部楼层   河北省石家庄市
又改进了哦
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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