beve
Осваивающий
- Сообщения
- 104
- Репутация
- 31
OS Windows 7.
Мне нужно узнать какая программа поместила текст в буфер обмена. Сначала можно узнать хендл-дескриптор окна этой программы. Нашел данную функцию в справке, она должна указать дескриптор окна из которого был помещен текст в буфер обмена, но не работает.
Для примера нужно вставить скрипт, что ниже, в SciTE и скопировать фрагмент текста из него. Потом запустить скрипт на выполнениие, в результате оказывается, что хендл окна с которого был скопирован текст в буфер (а это SciTE), не совпадает с хендлом самого SciTE. Что я не понимаю?
Мне нужно узнать какая программа поместила текст в буфер обмена. Сначала можно узнать хендл-дескриптор окна этой программы. Нашел данную функцию в справке, она должна указать дескриптор окна из которого был помещен текст в буфер обмена, но не работает.
Для примера нужно вставить скрипт, что ниже, в SciTE и скопировать фрагмент текста из него. Потом запустить скрипт на выполнениие, в результате оказывается, что хендл окна с которого был скопирован текст в буфер (а это SciTE), не совпадает с хендлом самого SciTE. Что я не понимаю?
Код:
#include <GuiConstantsEx.au3>
#include <ClipBoard.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
Opt('MustDeclareVars', 1)
Global $iMemo
Global $Handle= WinGetHandle("[ACTIVE]")
_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()
; Открывает буфер обмена
If Not _ClipBoard_Open ($hGUI) Then _WinAPI_ShowError ("_ClipBoard_Open failed")
ShowData($hGUI)
; Закрывает буфер обмена
_ClipBoard_Close ()
; Цикл выполняется, пока окно не будет закрыто
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc ;==>_Main
; Показывает статистику буфера обмена
Func ShowData($hGUI)
MemoWrite("Дескриптор окна (из которого текст был помещен в буфер) .......: " & _ClipBoard_GetOwner ())
MemoWrite("Дескриптор окна SciTE (с которого был скопирован текст в буфер) ..: " & $Handle)
MemoWrite()
MemoWrite("Текст в буфере ..: " & ClipGet())
MemoWrite()
EndFunc ;==>ShowData
; Записывает строку в элемент для заметок
Func MemoWrite($sMessage = "")
GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc ;==>MemoWrite