Что нового

Файл изображения "занят" после копирования в буфер

sterro_sasha

Новичок
Сообщения
45
Репутация
1
Подскажите пожалуйста! Кое-как нашел рабочий вариант копирования картинки в буфер. Все работает. Но после копирования - файл картинки удалить нельзя, пишет что закройте программу. Подскажите пожалуйста, что нужно добавить в код, чтобы после копирования файл освобождался и его можно было удалить?

Заранее огромное спасибо!!

Код:
#include <GDIPlus.au3>
#include <Clipboard.au3>
#include <WinAPISys.au3>
#include <Misc.au3>
#include <GDIPlus.au3>
#include <Clipboard.au3>
#include <WinAPIEx.au3>
#include <APIConstants.au3>
#include <Array.au3>

_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & '\image.jpg')
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)

$hBitmapCopy = _WinAPI_CopyImage($hBitmap, 0, 0, 0, BitOR($LR_COPYDELETEORG, $LR_COPYRETURNORG))
_WinAPI_DeleteObject($hBitmap)

_ClipBoard_Open(0)
_ClipBoard_SetDataEx($hBitmapCopy, $CF_BITMAP)
_ClipBoard_Close()
_GDIPlus_Shutdown()
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Код:
#include <GDIPlus.au3>
#include <Clipboard.au3>

_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & '\image.jpg')
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
_GDIPlus_ImageDispose($hImage) ; <== добавить

$hBitmapCopy = _WinAPI_CopyImage($hBitmap, 0, 0, 0, BitOR($LR_COPYDELETEORG, $LR_COPYRETURNORG))
_WinAPI_DeleteObject($hBitmap)

_ClipBoard_Open(0)
_ClipBoard_SetDataEx($hBitmapCopy, $CF_BITMAP)
_ClipBoard_Close()
_WinAPI_DeleteObject($hBitmapCopy) ; <== добавить
_GDIPlus_Shutdown()
 
Автор
S

sterro_sasha

Новичок
Сообщения
45
Репутация
1
Код:
#include <GDIPlus.au3>
#include <Clipboard.au3>

_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & '\image.jpg')
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
_GDIPlus_ImageDispose($hImage) ; <== добавить

$hBitmapCopy = _WinAPI_CopyImage($hBitmap, 0, 0, 0, BitOR($LR_COPYDELETEORG, $LR_COPYRETURNORG))
_WinAPI_DeleteObject($hBitmap)

_ClipBoard_Open(0)
_ClipBoard_SetDataEx($hBitmapCopy, $CF_BITMAP)
_ClipBoard_Close()
_WinAPI_DeleteObject($hBitmapCopy) ; <== добавить
_GDIPlus_Shutdown()
Спасибо вам большое!!
 
Верх