Функция _ClipBoard_ChangeChain

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


_ClipBoard_ChangeChain

Удаляет указанное окно из цепочки просмотрщиков буфера обмена

#include <Clipboard.au3>
_ClipBoard_ChangeChain($hRemove, $hNewNext)

Параметры

$hRemove Дескриптор окна, который будет удалён из цепочки.
Этот дескриптор использовался в вызове _ClipBoard_SetViewer при добавлении в цепочку.
$hNewNext Дескриптор окна, который следует за окном в параметре $hRemove в цепочке просмотрщиков буфера обмена.
Этот дескриптор возвращается функцией _ClipBoard_SetViewer, пока последовательность цепочки не была изменена в ответ на сообщение $WM_CHANGECBCHAIN.

Примечания

Окно, определяемое параметром $hNewNext заменяет окно $hRemove в цепочке просмотрщиков буфера обмена. Функция _ClipBoard_SetViewer высылает сообщение $WM_CHANGECBCHAIN первому окну в цепочке просмотрщиков буфера обмена.

См. также

_ClipBoard_SetViewer

См. также

Искать ChangeClipboardChain в библиотеке MSDN

Пример

#include <Clipboard.au3>
#include <GUIConstantsEx.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")

    ; Цикл выполняется, пока окно не будет закрыто
    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