Страница: 1 |
Страница: 1 |
Вопрос: Clipboard
Добавлено: 10.02.06 10:20
Автор вопроса: zulus
Привет всем!
Народ, я тут первый раз постюсь так что не кидайтесь табуретками если что. Загрузив ПБ у меня возникла проблемка с буфером обмена, вернее в том, что я не представляю как им пользоваться. В справке ничего по этому поводу не сказано. Мне кажется что надо это дело юзать через СендМессадж, но если это так, то как? Хелп!
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
zulus
Вопросов: 2
Ответов: 23
Профиль | | #1
Добавлено: 10.02.06 15:50
Чуть ниже была тема про клипборд с примером от CyRax и тот код работает, но ничего не возвращает. Так что необходимо что-то другое.
Номер ответа: 2
Автор ответа:
ygen
Вопросов: 36
Ответов: 87
Web-сайт:
Профиль | | #2
Добавлено: 10.02.06 15:51
Не врублю чё за ПБ(если VB, то читай)
Короче вот:
clipboard.SetData файлик загнать
clipboard.GetData получить
clipboard.SetText текстик загнать
clipboard.GetText получить
clipboard.clear всё стереть нафиг
Номер ответа: 3
Автор ответа:
zulus
Вопросов: 2
Ответов: 23
Профиль | | #3
Добавлено: 10.02.06 15:58
Нет, PB = PowerBasic
Номер ответа: 4
Автор ответа:
alex
Вопросов: 84
Ответов: 453
Профиль | | #4
Добавлено: 11.02.06 17:47
Народ, я тут первый раз постюсь так что не кидайтесь табуретками если что. Загрузив ПБ у меня возникла проблемка с буфером обмена, вернее в том, что я не представляю как им пользоваться. В справке ничего по этому поводу не сказано. Мне кажется что надо это дело юзать через СендМессадж, но если это так, то как? Хелп!
Для работы с буфером обмена используй следующие API функции:
ChangeClipboardChain
CloseClipboard
CountClipboardFormats
EmptyClipboard
EnumClipboardFormats
GetClipboardData
GetClipboardFormatName
GetClipboardOwner
GetClipboardViewer
GetOpenClipboardWindow
GetPriorityClipboardFormat
IsClipboardFormatAvailable
OpenClipboard
RegisterClipboardFormat
SetClipboardData
SetClipboardViewer
Небольшой пример, загрузка файла с диска в буфер обмена:
$DIM ALL
$INCLUDE "WIN32API.INC"
FUNCTION WriteToClipBoard(BYVAL content AS STRING) AS LONG
ON ERROR GOTO WriteToClipBoardError
LOCAL where AS LONG, hData AS LONG, bytes AS LONG
content = content + CHR$(0)
bytes = LEN(content)
IF bytes < 2 THEN EXIT FUNCTION
hData = GlobalAlloc(&H2002, bytes) ' get memory of clipboard
where = GlobalLock(hData) ' lock it
POKE$ where, content ' paste text into memory
GlobalUnlock hData ' unlock memory
IF ISFALSE OpenClipboard(0) THEN ' if clipboard isn't available
GlobalFree hData ' free up memory
FUNCTION = 0
EXIT FUNCTION
END IF
EmptyClipboard ' empty whatever's in there now
SetClipBoardData %CF_TEXT, hData ' %CF_TEXT = for text
CloseClipboard ' release clipboard
FUNCTION = -1 ' success
WriteToClipBoardExit:
EXIT FUNCTION
WriteToClipBoardError:
RESUME WriteToClipBoardExit
END FUNCTION
FUNCTION PBMAIN() AS LONG
ON ERROR GOTO PbMainError
 IM LineNum AS LONG
 IM FILNAME AS STRING
 IM Content AS STRING
 IM Ecode AS LONG
FilName$ = COMMAND$
LineNum = 10:FilName$ = COMMAND$
IF DIR$(FilName$) = "" THEN EXIT FUNCTION
LineNum = 20:OPEN FilName$ FOR BINARY SHARED AS #1
LineNum = 30:GET$ #1, LOF(1), content$
lineNum = 40: REPLACE CHR$(0) WITH CHR$(32) IN content$ 'replace nulls
LineNum = 50:Ecode& = WriteToClipBoard(content$ + CHR$(0))
LineNum = 60
CLOSE #1
PbMainExit:
EXIT FUNCTION
PbMainError:
MSGBOX "Error writing to clipboard at line "+STR$(LineNum)+ "Error number"+STR$(ERR)
RESUME PbMainExit
END FUNCTION
Номер ответа: 5
Автор ответа:
zulus
Вопросов: 2
Ответов: 23
Профиль | | #5
Добавлено: 11.02.06 18:01
Спасибо, чтало намного понятнее.