Что нового

Удаление временного файла после окончания работы с ним

FazZzuR

Новичок
Сообщения
24
Репутация
1
Довольно тривиальная задача, но по непонятной мне причине, файл недоступен к удалению. Если я ставлю sleep после всех DeleteObject и пытаюсь удалить файл вручную в проводнике, то получаю уведомление о том что файл занят процессом autoit. Вроде бы закрыл все что открыл, что я упускаю?

Код:
_GDIPlus_Startup()
	_ScreenCapture_SetBMPFormat(0)
	_ScreenCapture_Capture('tmp.bmp')
	$tmp = _GDIPlus_BitmapCreateFromFile('tmp.bmp')
	$hSource = _GDIPlus_BitmapCreateHBITMAPFromBitmap($tmp)
	$tmp = _GDIPlus_BitmapCreateFromFile($image)
	$hFind = _GDIPlus_BitmapCreateHBITMAPFromBitmap($tmp)
	$aCoords = _BmpSearch($hSource, $hFind, 1)

	$tmp = _GDIPlus_ImageLoadFromFile($image)
	$imageSize = _GDIPlus_ImageGetDimension($tmp)

	_GDIPlus_ImageDispose($tmp)
	_WinAPI_DeleteObject($hSource)
	_WinAPI_DeleteObject($hFind)
	_GDIPlus_Shutdown()

	FileDelete("tmp.bmp")


Тему удалить не смог. Спустя какое то время после поста, в качестве эксперимента попробовал для каждого файла создать свою переменную а не использовать 1 временную. После чего все стало удаляться как надо. Извиняюсь за нубскую тему, но пол дня не мог до этого дойти :smile:

Код:
_GDIPlus_Startup()
	_ScreenCapture_SetBMPFormat(0)
	_ScreenCapture_Capture('tmp.bmp')
	$source = _GDIPlus_BitmapCreateFromFile('tmp.bmp')
	$hSource = _GDIPlus_BitmapCreateHBITMAPFromBitmap($source)
	$find = _GDIPlus_BitmapCreateFromFile($image)
	$hFind = _GDIPlus_BitmapCreateHBITMAPFromBitmap($find)
	$aCoords = _BmpSearch($hSource, $hFind, 1)

	$hImage = _GDIPlus_ImageLoadFromFile($image)
	$imageSize = _GDIPlus_ImageGetDimension($hImage)

	_GDIPlus_BitmapDispose($source)
	_GDIPlus_BitmapDispose($find)
	_GDIPlus_ImageDispose($hImage)
	_WinAPI_DeleteObject($hSource)
	_WinAPI_DeleteObject($hFind)
	_GDIPlus_Shutdown()

	FileDelete("tmp.bmp")
 
Верх