找回密码
 加入
搜索
查看: 2452|回复: 8

[AU3基础] 一个被打开的文件无法关闭,请高手帮忙看下,代码不长 [已解决]

  [复制链接]
发表于 2012-2-28 19:02:28 | 显示全部楼层 |阅读模式
本帖最后由 z761003 于 2012-2-29 09:06 编辑

请高手帮忙看一下,以下是一段将BMP图片转为JPG格式的图片,当转好后,程序没退出时,我想删除这个BMP,可发现这个BMP 是被打开的,无法删掉,请问如何才能在不退出程序的前提下让这个BMP可以删除
#include <GDIPlus.au3>
$TParam = _GDIPlus_ParamInit(1);初始化编码器的参数列表
$Datas = DllStructCreate("int Quality")
DllStructSetData($Datas, "Quality", 50);创建 C/C++ 数据结构供 DllCall 使用
 _GDIPlus_ParamAdd($TParam, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, DllStructGetPtr($Datas));添加值到编码器参数列表
 $Param = DllStructGetPtr($TParam);返回数据结构的一个元素
If IsDllStruct($Param) Then $Param = DllStructGetPtr($TParam)
 _GDIPlus_Startup()
$image = _GDIPlus_ImageLoadFromFile("c:\1.BMP");创建基于文件的图像对象
 $clsid = _GDIPlus_EncodersGetCLSID("JPG");返回指定图像文件类型的编码器 CLSID
 _GDIPlus_ImageSaveToFileEx($image, "c:\1.JPG", $clsid,$Param);将图像保存到文件
 _GDIPlus_Shutdown();清理微软 Windows GDI+ 使用的资源
FileDelete ("c:\1.BMP")
 Sleep(10000)
发表于 2012-2-28 19:16:22 | 显示全部楼层
试试在删除之前加上
$handle = FileOpen("c:\1.JPG", 0)
FileClose($handle)
 楼主| 发表于 2012-2-28 19:19:59 | 显示全部楼层
回复 2# lanfengc


    删不了哦
发表于 2012-2-28 19:26:13 | 显示全部楼层
回复 3# z761003


    哦,你没有释放位图对象。 加上这句在 释放GDI资源前面就可以了
_GDIPlus_BitmapDispose($image)
 楼主| 发表于 2012-2-28 19:40:12 | 显示全部楼层
加上您的那句,还是不行,用函数filedelete()删不掉
发表于 2012-2-28 19:58:12 | 显示全部楼层
#include <GDIPlus.au3>
$TParam = _GDIPlus_ParamInit(1);初始化编码器的参数列表
$Datas = DllStructCreate("int Quality")
DllStructSetData($Datas, "Quality", 50);创建 C/C++ 数据结构供 DllCall 使用
_GDIPlus_ParamAdd($TParam, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, DllStructGetPtr($Datas));添加值到编码器参数列表
$Param = DllStructGetPtr($TParam);返回数据结构的一个元素
If IsDllStruct($Param) Then $Param = DllStructGetPtr($TParam)
_GDIPlus_Startup()
$image = _GDIPlus_ImageLoadFromFile("c:\1.BMP");创建基于文件的图像对象
$clsid = _GDIPlus_EncodersGetCLSID("JPG");返回指定图像文件类型的编码器 CLSID
_GDIPlus_ImageSaveToFileEx($image, "c:\1.JPG", $clsid,$Param);将图像保存到文件
  
_GDIPlus_ImageDispose($image);释放图像对象   
_GDIPlus_Shutdown();清理微软 Windows GDI+ 使用的资源
FileDelete("c:\1.BMP")

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2012-2-28 20:12:41 | 显示全部楼层
回复 1# z761003

备注

调用 _GDIPlus_Shutdown 前, 必须处理掉所有 GDI+ 对象.
发表于 2012-2-28 20:18:15 | 显示全部楼层
_GDIPlus_ImageDispose() 先
 楼主| 发表于 2012-2-28 22:15:01 | 显示全部楼层
谢谢2楼,6楼,8楼,,,可以了!!!我次序调错了,所以没删掉,谢谢评委,谢谢嘉宾,谢谢台下每一位,谢谢大家
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-19 13:38 , Processed in 0.087111 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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