Что нового

Копирование ссылки из текста без конткстного меню

mir546

Новичок
Сообщения
27
Репутация
0
Так и не наел как реализовать, подскажите, умные люди
Обычный текст, а в нем ссылка. Как извлечь ссылку в буфер обмена, без контекстного меню?
Может есть какие-то "секретные" сочетания клавиш?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 320
mir546,
Сформулируйте вопрос понятнее, я, например, ничего не понял.
 
Автор
M

mir546

Новичок
Сообщения
27
Репутация
0
madmasles сказал(а):
mir546,
Сформулируйте вопрос понятнее, я, например, ничего не понял.
Есть такие ссылки http://autoit-script.ru
А есть ссылка по тексту(когда в теге <a href='link'>Ссылка</ a>)

Необходимо при наведении курсора мыши на второй тип ссылок, скопировать адрес ссылки в буфер обмена.
Известный мне способ: автоматизация по координатам через контекстное меню. - не подходит
Есть ли другие способы?
Что бы при наведении можно было скопировать url-ссылки, а не текст.
 

inververs

AutoIT Гуру
Сообщения
2 135
Репутация
464
Смотря какой браузер.. проще в IE
 

inververs

AutoIT Гуру
Сообщения
2 135
Репутация
464
Само просто это следить за статус баром(нужно его включить перед этим), когда наводишь курсор на ссылку, внизу появляется адрес.
Сделайте бесконечный цикл, опрашивайте свойство _IEPropertyGet ( $oIe, 'statustext'), как только там что то появилось, копируйте это в буфер




Добавлено:
Сообщение автоматически объединено:

Или посмотрите эту функцию:
Код:
_GUICtrlStatusBar_GetText
она достает текст из статус бара. В таком случае не нужен объект IE
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 320
Можно попробовать реализовать это через
Код:
_IEHeadInsertEventScript()
 

InnI

AutoIT Гуру
Сообщения
4 481
Репутация
1 216
mir546
Скрипт использует UIAutomate и работает в IE, Firefox, Chrome (при запуске с параметром --force-renderer-accessibility) и на любых других ссылках (например, в панели управления).
Код:
#include "UIAutomate.au3"
#include <WindowsConstants.au3>

Global $ScanDelay = 1000 ; частота опроса
Global $HighlightDelay = 300 ; продолжительность подсветки
Global $OldName, $NewName, $OldValue, $NewValue

While 1
  $oLink = 0
  $oElement = _UIA_GetElementFromPoint(MouseGetPos(0), MouseGetPos(1))
  If _UIA_ElementGetPropertyValue($oElement, "ControlType") = $UIA_HyperlinkControlTypeId Then
    $oLink = $oElement
  Else
    $oParent = _UIA_ElementGetParent($oElement)
    If _UIA_ElementGetPropertyValue($oParent, "ControlType") = $UIA_HyperlinkControlTypeId Then
      $oLink = $oParent
    Else
      $oGrandParent = _UIA_ElementGetParent($oParent)
      If _UIA_ElementGetPropertyValue($oGrandParent, "ControlType") = $UIA_HyperlinkControlTypeId Then
        $oLink = $oGrandParent
      EndIf
    EndIf
  EndIf
  If IsObj($oLink) Then
    $NewName = _UIA_ElementGetPropertyValue($oLink, "Name")
    $NewValue  = _UIA_ElementGetPropertyValue($oLink, "ValueValue")
    If $NewName <> $OldName Or $NewValue <> $OldValue Then
      ConsoleWrite($NewName & " - " & $NewValue & @CRLF)
      ClipPut($NewValue)
      $OldName = $NewName
      $OldValue = $NewValue
      $Rect = _UIA_ElementGetBoundingRectangle($oLink)
      $GUI = GUICreate("", $Rect[2] - $Rect[0], $Rect[3] - $Rect[1], $Rect[0], $Rect[1], $WS_POPUP, BitOR($WS_EX_TOOLWINDOW,$WS_EX_TOPMOST))
      GUISetBkColor(0xFF0000)
      GUISetState(@SW_SHOWNOACTIVATE)
      WinSetTrans($GUI, "", 128)
      Sleep($HighlightDelay)
      GUIDelete()
    EndIf
  EndIf
  Sleep($ScanDelay)
WEnd
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 320
mir546,
Немного переделанный пример из справки.
Код:
#include <IE.au3>

$oIE = _IECreate()
HotKeySet('{Esc}', '_Exit')
_IENavigate($oIE, 'http://autoit-script.ru/')
$oLinks = _IELinkGetCollection($oIE)
For $oLink In $oLinks
	$sLinkId = _IEPropertyGet($oLink, 'uniqueid')
	_IEHeadInsertEventScript($oIE, $sLinkId, 'OnMouseEnter', '')
	ObjEvent($oLink, '_Evt_')
Next

While Sleep(1000)
WEnd

Func _Evt_OnMouseEnter()
	Local $o_link = @COM_EventObj
	ConsoleWrite($o_link.innertext & @TAB & $o_link.href & @CRLF)
EndFunc   ;==>_Evt_OnMouseEnter

Func _Exit()
	_IEQuit($oIE)
	Exit
EndFunc   ;==>_Exit
 
Автор
M

mir546

Новичок
Сообщения
27
Репутация
0
По моему самый простой:
Код:
#Include <IE.au3>
$url = ("site.com")
$oIE = _IECreate($url, 1) ;второй параметр $f_tryAttach = 1 - перед созданием объекта пытаться присоединиться к странице
$sText = _IEPropertyGet($oIE, "statustext")
MsgBox(0,"",$sText)


ещё интересна реализация на
Код:
_GUICtrlStatusBar_GetText

но я уже выбрал 1 вариант
Всем Благодарю!
 
Верх