标题:VB怎么把一个文件 复制到内存,是复制到内存里!!
只看楼主
elik720
Rank: 1
等 级:新手上路
帖 子:7
专家分:4
注 册:2020-8-27
得分:0 
以下是引用风吹过b在2020-9-3 16:06:17的发言:

应该是这种的。我前就是没找到那个结构的定义。
    Call EmptyClipboard            打开剪切板
    Len1 = Len(dFiles)             结构长度
    Len2 = LenB(StrConv(FileName, vbFromUnicode))   文件名长度
    hMem = GlobalAlloc(GMEM_MOVEABLE Or GMEM_ZEROINIT, Len1 + Len2)   申请剪切板内存
    MemPtr = GlobalLock(hMem)      锁定剪切板内存
    dFiles.pFiles = Len1
    Call CopyMemory(ByVal MemPtr, dFiles, Len1)       结构体写入剪切板内存
    Call CopyMemory(ByVal (MemPtr + Len1), ByVal FileName, Len2)   结构体后写入文件名
    Call GlobalUnlock(hMem)        开锁剪切板内存
    Call SetClipboardData(CF_HDROP, hMem)    设置剪切板内容
    Call CloseClipboard            关闭剪切板

老铁牛B    解释的到位   虽然还是不懂  吼吼    看不懂你的注释  是因为不了解内存结构 为什么要这样写 所以不太懂   
2020-09-05 12:11
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
我前面查的资料,
复制文件,在剪切板中数据格式为:结构+文件名
所以要先创建一个结构,然后在结构填充必要的数据,
再申请剪切板专用内存,然后把结构和文件名依次放到这个指定内存中去。
因Windows是多任务操作系统,所以操作剪切板内存时,需要锁定这个内存,锁定后,其他应用在锁定期间,就无法再操作这块内存,防止冲突。详情请去了解多进程(线程)间通讯或共享内存操作。


授人于鱼,不如授人于渔
早已停用QQ了
2020-09-05 14:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-502983-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.101852 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved