| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3469 人关注过本帖, 2 人收藏
标题: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
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
我前面查的资料,
复制文件,在剪切板中数据格式为:结构+文件名
所以要先创建一个结构,然后在结构填充必要的数据,
再申请剪切板专用内存,然后把结构和文件名依次放到这个指定内存中去。
因Windows是多任务操作系统,所以操作剪切板内存时,需要锁定这个内存,锁定后,其他应用在锁定期间,就无法再操作这块内存,防止冲突。详情请去了解多进程(线程)间通讯或共享内存操作。


授人于鱼,不如授人于渔
早已停用QQ了
2020-09-05 14:07
快速回复:VB怎么把一个文件 复制到内存,是复制到内存里!!
数据加载中...
 
   



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

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