Что нового

Поиск дубликатов гиперссылок

dr.room

Новичок
Сообщения
283
Репутация
0
Версия AutoIt: 3.
AutoIt v3.3.14.2
Описание:

Всем привет

Как можно решить такой вопрос
Есть блокнот с гиперссылками, с открытым, но не активным окном
У скрипта – такая задача: в фоне, без окон…
- скопировать ссылку с адресной строки (Google Chrome)
- проверить её на наличие дубликатов в блокноте (пожалуй - это для меня самое трудное)
- вывести сообщение при наличии совпадения

Спасибо заранее

Примечания:
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
dr.room
это для меня самое трудное
Код:
$Link = "http://autoit-script.ru"
$Text = ControlGetText("[class:Notepad]", "", "Edit1")
StringReplace($Text, $Link, "")
MsgBox(0, "", "Найдено ссылок : " & @extended)
 
Автор
D

dr.room

Новичок
Сообщения
283
Репутация
0
Здравствуйте, InnI
Если можно было бы - реализовать MsgBox только в случае наличия совпадения или дубликата, было бы отлично.
И еще - кажется я несколько переоценил свои знания. :stars:
Не могли бы Вы скрипт полностью написать
Большое спасибо.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Код:
$hWnd = WinWaitActive("[regexptitle:.*Google Chrome]")
ControlSend($hWnd, "", "", "^l")
ControlSend($hWnd, "", "", "^{ins}")
StringReplace(ControlGetText("[class:Notepad]", "", "Edit1"), ClipGet(), "")
If @extended > 1 Then MsgBox(0, "Найдено : " & @extended, ClipGet())
 
Автор
D

dr.room

Новичок
Сообщения
283
Репутация
0
Совсем запутался, подскажите пожалуйста:
1. Что означает regexptitle?
2. Что мне нужно дописать, чтобы скрипт выполнил задачу, все 3 шага ?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
dr.room
Что означает regexptitle?
http://autoit-script.ru/autoit3_docs/intro/windowsadvanced.htm

чтобы скрипт выполнил задачу, все 3 шага
Открыть блокнот, ввести адрес в Chrome, запустить скрипт, активировать окно Chrome. Если найдено совпадение - увидите MsgBox, если нет - скрипт "молча" завершит работу.
 
Автор
D

dr.room

Новичок
Сообщения
283
Репутация
0
Я применил этот код - ничего не добавляя.
Код:
$hWnd = WinWaitActive("[regexptitle:.*Google Chrome]")
ControlSend($hWnd, "", "", "^l")
ControlSend($hWnd, "", "", "^{ins}")
StringReplace(ControlGetText("[class:Notepad]", "", "Edit1"), ClipGet(), "")
If @extended > 1 Then MsgBox(0, "Найдено : " & @extended, ClipGet())

Почему то не было сообщения. (Ссылку сохранил в блокноте, скрипт запустил, окно со страницей этой ссылки актировал)
ps
Версия Chrome: Version 48.0.2564.109
- не много устарела, может в этом дело...
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
dr.room
Ссылку сохранил в блокноте
Чтобы появилось сообщение нужно как минимум две одинаковых ссылки. Вы же дубликаты ищете, или я чего-то не понимаю?

Когда активируете окно Chrome - строка с адресом выделяется? Ссылка в буфере обмена появляется?
 
Автор
D

dr.room

Новичок
Сообщения
283
Репутация
0
Когда активируете окно Chrome - строка с адресом выделяется? Ссылка в буфере обмена появляется?
Нет, этого нет: выделение адресной строки я бы заметил, а ссылку скопированную в буфер обмена заметила бы программа Clipdiary

Скрипт просто ожидает окно Chrome, не обращаясь к нему....
затем проверяет блокнот на наличие дубликата среди ссылок в блокнтое и выводит сообщение (здесь всё ок), если есть дубликат

Идея была такая :
Нужно проверить дубликат - до копирования в блокнот. Сверяя гиперссылку из адресной строки Chrome и содержимым блокнота
Спасибо

Ps
Эх - научить бы скрипт сверять ссылку по домену
Т.е. если есть
http://autoit-script.ru/index.php?action=post;quote=131228;topic=22455.0
то нужно сверить по
http://autoit-script.ru/
убрав лишнее после одиночного слеша.... но... это если получиться.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
dr.room
Если "этого нет", то "ок" быть не может.

ожидает окно Chrome, не обращаясь к нему
Всё правильно. У вас указано: "скопировать ссылку с адресной строки". А в какой момент это делать - не сказано. Я сделал при активации окна Chrome. Не устаивает - переделайте на горячую клавишу или на другое, нужное вам, событие.

проверить дубликат - до копирования в блокнот
Как это - ДО? :stars: Скрипт вообще ничего в блокнот не копирует.



Вы сначала разберитесь со своими "хотелками", продумайте детально, что вам нужно, а потом уже всё оформляйте. В противном случае люди будут делать, как поняли, а не как вы себе представляли. Или не будут делать вообще, потому что задавать уточняющие вопросы просто лень, а доделывать и переделывать никто не хочет. Поэтому каждое ваше "а можно ещё вот это" с высокой вероятностью будет не реализовано.
 
Автор
D

dr.room

Новичок
Сообщения
283
Репутация
0
продумайте детально
Вы правы, просто тяжело собраться с мыслями, когда температура > 40
Попробую откорректировать
Стояла простая задача у меня: скопировать урл из адресной строки в блокнот
Реализовывал просто: Cntrl + D , Cntrl + C, Cntrl + V
(уверен, есть более надежные решения)

И тут я понял, в какой-то момент: нельзя просто так ссылку скопировать. Ведь запросто можно наделать дубликатов. Чтобы избежать путаницы и напрасного увеличения веса документа - была предпринята попытка упреждения попадания дубликатов в блокнот, сриптом. При этом – скрипт, в случае обнаружения совпадения урлов блокнота и адресной строки, должен был бы предупредить меня (как на скриншоте). Но у меня не получилось, к сожалению.
Помогите пожалуйста. разобраться.
Спасибо.
 
A

Alofa

Гость
Возможно так вам сгодиться:
Код:
Local $sNotepadText, $hWnd, $sKey = '^v'
HotKeySet($sKey, '_MyFunc')

While 1
	$hWnd = WinWaitActive('[REGEXPCLASS:(?i)Pad]')
	$sNotepadText = WinGetText($hWnd)
	Sleep(100)
WEnd

Func _MyFunc()
	If WinActive($hWnd) And StringRegExp($sNotepadText, '\Q' & ClipGet() & '\E\s') Then
		If MsgBox(4096 + 1 + 64, 'Предупреждение!', 'URL уже есть в блокноте.' & @LF & @LF & 'Продолжить копирование?', 5) = 2 Then Return
	EndIf
	ControlSend('', '', '', $sKey)
EndFunc   ;==>_MyFunc


Скрипт реагирует на нажатие сочетания клавиш "Ctrl+v" (тут нужно учесть Этот момент).
Закончить выполнение скрипта можно через меню иконки в трее.
 
Автор
D

dr.room

Новичок
Сообщения
283
Репутация
0
Alofa - огромное спасибо !
Если можно еще вопрос: нет ли способа проверять дубликаты - в фоне т.е. без необходимости активации блокнота?
 
Верх