_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