_ClipBoard_SetViewer
Добавляет указанное окно в цепочку просмотрщиков буфера обмена
#include <Clipboard.au3>
_ClipBoard_SetViewer($hViewer)
Параметры
$hViewer | Дескриптор окна для добавления в цепочку просмотрщиков буфера обмена |
Возвращаемое значение
Успех: | Возвращает дескриптор следующего окна в цепочке просмотрщиков буфера обмена |
Ошибка: | Возвращает 0, если нет просмотрщиков буфера обмена |
Примечания
Окна, являющиеся частью цепочки просмотрщиков буфера обмена должны обрабатывать сообщения буфера обмена $WM_CHANGECBCHAIN и $WM_DRAWCLIPBOARD. Каждое окно просмотрщика буфера обмена вызывает функцию _SendMessage() для передачи этих сообщений следующему окну в цепочке просмотра буфера обмена. В завершении окно просмотрщика буфера обмена должно удалить себя из цепочки просмотрщиков буфера обмена вызовом функции _ClipBoard_ChangeChain().См. также
_ClipBoard_ChangeChain, _ClipBoard_GetViewerСм. также
Искать SetClipboardViewer в библиотеке MSDNПример
#include <GUIConstantsEx.au3>
#include <Clipboard.au3>
#include <WindowsConstants.au3>
#include <SendMessage.au3>
Global $iMemo, $hNext = 0
_Main()
Func _Main()
Local $hGUI
; Создаёт GUI
$hGUI = GUICreate("Clipboard", 600, 400)
$iMemo = GUICtrlCreateEdit("", 2, 2, 596, 396, $WS_VSCROLL)
GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
GUISetState()
; Инициализация просмотрщика буфера обмена
$hNext = _ClipBoard_SetViewer ($hGUI)
GUIRegisterMsg($WM_CHANGECBCHAIN, "WM_CHANGECBCHAIN")
GUIRegisterMsg($WM_DRAWCLIPBOARD, "WM_DRAWCLIPBOARD")
MemoWrite("Дескриптор GUI ..........: " & $hGUI)
MemoWrite("Дескриптор просмотрщика .: " & _ClipBoard_GetViewer())
; Цикл выполняется, пока окно не будет закрыто
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
; Закрывает просмотрщик буфера обмена
_ClipBoard_ChangeChain ($hGUI, $hNext)
EndFunc ;==>_Main
; Записывает строку в элемент для заметок
Func MemoWrite($sMessage = "")
GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc ;==>MemoWrite
; Handle $WM_CHANGECBCHAIN messages
Func WM_CHANGECBCHAIN($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg
; Показывают, что сообщение было получено
MemoWrite("***** $WM_CHANGECBCHAIN *****")
; If the next window is closing, repair the chain
If $iwParam = $hNext Then
$hNext = $ilParam
; Otherwise pass the message to the next viewer
ElseIf $hNext <> 0 Then
_SendMessage ($hNext, $WM_CHANGECBCHAIN, $iwParam, $ilParam, 0, "hwnd", "hwnd")
EndIf
EndFunc ;==>WM_CHANGECBCHAIN
; Handle $WM_DRAWCLIPBOARD messages
Func WM_DRAWCLIPBOARD($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg
; Отображает любой текст буфера обмена
MemoWrite(_ClipBoard_GetData ())
; Pass the message to the next viewer
If $hNext <> 0 Then _SendMessage ($hNext, $WM_DRAWCLIPBOARD, $iwParam, $ilParam)
EndFunc ;==>WM_DRAWCLIPBOARD