Что нового

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

mir546

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

madmasles

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

mir546

Новичок
Сообщения
27
Репутация
0
madmasles сказал(а):
mir546,
Сформулируйте вопрос понятнее, я, например, ничего не понял.

Есть такие ссылки http://autoit-script.ru
А есть ссылка по тексту(когда в теге <a href='link'>Ссылка</ a>)

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

inververs

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




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

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

madmasles

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

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
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,322
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 вариант
Всем Благодарю!
 
Верх