Что нового

Копирование в буфер обмена по своим горячим клавишам

vovsla

Осваивающий
Сообщения
607
Репутация
36
Хочу сделать копирование в буфер обмена по своим горячим клавишам чтобы потом делать дополнительную обработку данных.
Только как лучше дать понять системе что нужно скопировать данные в буфер обмена?
Отправлять в активное окно "ctrl + c" кажется каким-то примитивным и ненадежным вариантом, может это можно сделать через _SendMessage?
Или может есть другие способы получить выделенные данные в активном окне в свою переменную минуя буфер обмена?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
А почему просто не отлавливать содержимое буфера обмена?


Vovsla [?]
Отправлять в активное окно "ctrl + c" кажется каким-то примитивным и ненадежным вариантом
Ctrl + INS надёжнее.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Код:
HotKeySet('{ESC}', '_Exit')
HotKeySet('^+c', '_GetText')

While 1
	Sleep(100)
WEnd

Func _Exit()
	Exit
EndFunc

Func _GetText()
	Local $sOld_CB = ClipGet()
	ClipPut('')
	
	Send('^{INS}')
	
	Local $iTimer = TimerInit()
	Local $sNew_CB = ''
	
	While $sNew_CB = '' And TimerDiff($iTimer) < 800
		$sNew_CB = ClipGet()
	WEnd
	
	If $sNew_CB = '' Then
		ClipPut($sOld_CB)
		Return
	EndIf
	
	MsgBox(64, 'Copied:', $sNew_CB)
EndFunc
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
CreatoR сказал(а):
А почему просто не отлавливать содержимое буфера обмена?


Vovsla [?]
Отправлять в активное окно "ctrl + c" кажется каким-то примитивным и ненадежным вариантом
Ctrl + INS надёжнее.
О мониторинге содержимого буфера обмена я и не подумал.
Большое спасибо всем за предложенные варианты.
 
Верх