Здравствуйте. Нужно вставлять рисунок из буффера обмена (копируется PrintScreen) через VBA, а как узнать что находится в буффере именно рисунок?
Вставка рисунка из буффера обмена
18.02.2011 07:05:20
|
|
|
|
18.02.2011 08:23:57
Узнать просто - достаточно проверить тип содержимого буфера обмена:
Делается это при помощи WinAPI-функций примерно так: Function GetPicturePath() As String On Error Resume Next PicPath = GetPathForTemporaryFiles PicPath = PicPath & "Picture" & Format(Now, "DD-MMM-YYYY_HH-NN-SS") & ".bmp" Dim PShape As Shape, hStrPtr As Long, Hndl As Long If Not CBool(OpenClipboard(0&)) Then MsgBox "Не удалось открыть буфер" GoTo NextSh End If hStrPtr = GetClipboardData(CF_ENHMETAFILE) ' ПРОВЕРКА НА НАЛИЧИЕ РИСУНКА В БУФЕРЕ ОБМЕНА If Not CBool(hStrPtr) Then MsgBox "Не удалось получить дескриптор" GoTo CloseClip End If PicPath = PicPath & "Picture" & hStrPtr & ".emf" Hndl = CopyEnhMetaFileA(hStrPtr, PicPath) ' КОПИРУЕМ РИСУНОК В ФАЙЛ If Hndl = 0 Then MsgBox "Не удалось создать файл" GoTo CloseClip Else GetPicturePath = PicPath End If Call DeleteEnhMetaFile(Hndl) CloseClip: CloseClipboard NextSh: 'очистка буфера обмена End Function Пример можно найти здесь: |
|
|
|
18.02.2011 10:04:58
Как я понял эта функция:
hStrPtr = GetClipboardData(CF_ENHMETAFILE) ' ПРОВЕРКА НА НАЛИЧИЕ РИСУНКА В БУФЕРЕ ОБМЕНА А как декларировать API функцию? |
|
|
|
18.02.2011 11:14:36
Спасибо. Разобрался, и с проверкой типа через API то же
|
||||
|
|
|||
Читают тему