Функция _ClipBoard_SetViewer

         Описание функции


_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