Автор Тема: Opera Library - Библиотека для работы с браузером Opera  (Прочитано 43725 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7814
  • Репутация: 2282
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
AutoIt: 3.2.10.0+
Версия: 1.8

Категория: Автоматизация, Браузеры

Описание: Библиотека позволяющая работать с браузером Opera. Однако не следует ожидать от неё тех же возможностей которые есть в IE.au3, Opera является безопасным браузером, поэтому не имеет COM-объекты и подобные модули доступа к функциям (которые есть в IE), что считается плюсом всего что касается надёжности.
Данная библиотека в основном предназначена для написания внешних дополнений к браузеру и автоматизация их интеграции.

Внимание: Эта библиотека проверялась и поддерживается на следующих версиях Opera: 8.54-9.5, 10.63.3516, некоторые критичные функций проверялись и на 11.x-12.x

Пример - Интеграция вашей программы (скрипт должен быть скомпилирован):
(нажмите для показа/скрытия)

Скачать: Opera_Library.zip
(во вложениях старые версии)

Снимок:

Источник: Офф. форум
Автор(ы): G.Sandler (CreatoR)
« Последнее редактирование: Июнь 21, 2013, 14:21:28 от CreatoR »


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Русское сообщество AutoIt

Opera Library - Библиотека для работы с браузером Opera
« Отправлен: Октябрь 17, 2009, 09:38:07 »

Zloy_Gelud

  • Гость
Отличная библиотека! Как раз сегодня пригодилась! :ok:

Оффлайн r35p3ct [?]

  • Продвинутый
  • ***
  • Сообщений: 222
  • Репутация: 60
  • Пол: Мужской
    • Награды
Планируется ли расширение работы со вкладками, хотябы простое закрытие последней?

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7814

  • Автор темы
  • Репутация: 2282
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
r35p3ct [?]
Цитировать
расширение работы со вкладками, хотябы простое закрытие последней?
Это можно сделать только имитацией г. клавиш (по умолчанию это «Ctrl + W»). Кстати будет полезна функция типа _OperaFindHotkeyAction - поиск горячей клавиши по действию, что поможет определить какая клавиша назначена на закрытие вкладки (текущей в данном случае).


Добавлено: Ноябрь 20, 2009, 00:16:46
Вот так примерно:

Код: AutoIt [Выделить]
#include <Opera_Library.au3>
#include <Array.au3>

$aHotKeys = _OperaGetActionHotkey("(?i)Close page.*", 1, "C:\Program Files\Opera")
_ArrayDisplay($aHotKeys)

Func _OperaGetActionHotkey($sAction, $iUseRegExp = 0, $sOpDir = -1)
    Local $sKeyboard_File = _OperaGetConfigFile("Keyboard", $sOpDir)
    If @error Then Return SetError(1, 0, 0)
   
    Local $aHotKeys_Section = IniReadSection($sKeyboard_File, "Application")
    If @error Then Return SetError(2, 0, 0)
   
    Local $aRet_HotKeys[$aHotKeys_Section[0][0]+1][2] = [[0]]
   
    For $i = 1 To $aHotKeys_Section[0][0]
        If ($iUseRegExp And StringRegExp($aHotKeys_Section[$i][1], $sAction)) Or _
            (Not $iUseRegExp And $aHotKeys_Section[$i][1] = $sAction) Then
           
            $aHotKeys_Section[$i][0] = StringRegExpReplace($aHotKeys_Section[$i][0], "(?i)platform.*?,|feature.*?,", "")
            $aHotKeys_Section[$i][0] = StringRegExpReplace($aHotKeys_Section[$i][0], "(?i)(f\d+)", "{\1}")
            $aHotKeys_Section[$i][0] = StringReplace($aHotKeys_Section[$i][0], "ctrl", "^")
            $aHotKeys_Section[$i][0] = StringReplace($aHotKeys_Section[$i][0], "shift", "+")
            $aHotKeys_Section[$i][0] = StringReplace($aHotKeys_Section[$i][0], "alt", "!")
            $aHotKeys_Section[$i][0] = StringStripWS($aHotKeys_Section[$i][0], 8)
            $aHotKeys_Section[$i][0] = StringRegExpReplace($aHotKeys_Section[$i][0], "(?i)(.*?)([\^\+!]+)(.*?)", "\2\1\3")
           
            $aRet_HotKeys[0][0] += 1
            $aRet_HotKeys[$aRet_HotKeys[0][0]][0] = $aHotKeys_Section[$i][1]
            $aRet_HotKeys[$aRet_HotKeys[0][0]][1] = $aHotKeys_Section[$i][0]
        EndIf
    Next
   
    If $aRet_HotKeys[0][0] = 0 Then Return SetError(3, 0, 0)
   
    ReDim $aRet_HotKeys[$aRet_HotKeys[0][0]+1][2]
    Return $aRet_HotKeys
EndFunc

« Последнее редактирование: Ноябрь 20, 2009, 00:16:46 от CreatoR, Причина: Объединение сообщений »

Русское сообщество AutoIt

Re: Opera Library - Библиотека для работы с браузером Opera
« Ответ #3 Отправлен: Ноябрь 19, 2009, 23:46:51 »

Оффлайн HukpoFuJl [?]

  • AццkuЙ
  • Осваивающий
  • **
  • Сообщений: 97
  • Репутация: 37
  • Пол: Мужской
  • AццkuЙ HukpoFuJl
    • Devorans
    • Награды
  • Версия AutoIt: 3.3.x.x
планируется ли создание библиотеки для оперы, для использования её как браузера, а не как программы... т.е. аналог библиотек под ИЕ и Файерфокс... С функциями вродe _OperaGetObjByID, _OperaAction, _OperaClickOnPicture и т.п. ?

Оффлайн Medic84 [?]

  • Администратор
  • *
  • Сообщений: 1416
  • Репутация: 303
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
CreatoR  [?]
Цитировать
Opera является безопастным браузером, поэтому не имеет COM-объекты и подобные модули доступа к функциям (которые есть в IE), что считается плюсом всего что касается надёжности.

HukpoFuJl
 Что вам из этого непонятно?

   
На форуме принято отмечать полезные сообщения пальцем вверх =)
Никогда не даю подробных примеров сразу, я сначала навожу на мысль - как можно написать. Учитесь мыслить сами, а не за других людей.

Оффлайн HukpoFuJl [?]

  • AццkuЙ
  • Осваивающий
  • **
  • Сообщений: 97
  • Репутация: 37
  • Пол: Мужской
  • AццkuЙ HukpoFuJl
    • Devorans
    • Награды
  • Версия AutoIt: 3.3.x.x
CreatoR  [?]
Цитировать
Opera является безопастным браузером, поэтому не имеет COM-объекты и подобные модули доступа к функциям (которые есть в IE), что считается плюсом всего что касается надёжности.

HukpoFuJl
 Что вам из этого непонятно?
Извиняюсь, читал не внимательно =))

Оффлайн Vendor [?]

  • Новичок
  • *
  • Сообщений: 70
  • Репутация: 8
  • Пол: Мужской
    • Награды
CreatoR,

Я так понимаю, некоторые функции библиотеки работают только в случае, если Opera установлена в "едином" каталоге (C:\Program Files\Opera, например) вместе со всеми скинами, плагинами, дампами посещенных страниц, иконок сайтов и пр.
Т.е. не учитываются пути как "%USERPROFILE%\%APPDATA%\Opera\..." и т.п. ??
The Power Within...

Русское сообщество AutoIt

Re: Opera Library - Библиотека для работы с браузером Opera
« Ответ #7 Отправлен: Июнь 13, 2010, 12:36:31 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7814

  • Автор темы
  • Репутация: 2282
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Vendor  [?]
Цитировать
некоторые функции библиотеки работают только в случае, если Opera установлена в "едином" каталоге
Какие именно?

Цитировать
не учитываются пути как "%USERPROFILE%\%APPDATA%\Opera\..." и т.п. ?
Учитываются, есть обратные показатели?

Оффлайн Vendor [?]

  • Новичок
  • *
  • Сообщений: 70
  • Репутация: 8
  • Пол: Мужской
    • Награды
Какие именно?
Например функция
Код: AutoIt [Выделить]
_OperaFindDir()


прекрасно находит путь установки Opera и возвращает соотв. массив.

Далее: функции

Код: AutoIt [Выделить]
_OperaGetDir(),  _OperaGetVersion(), _OperaGetTitle()


тоже справляются со своей задачей, но как дело доходит до

Код: AutoIt [Выделить]
_OperaGetProfileDir()


и далее... тут начинаются 'проблэмы'  :)  Возвращает коды ошибок.

Цитировать
Vendor: не учитываются пути как "%USERPROFILE%\%APPDATA%\Opera\..." и т.п. ?
Цитировать
CreatoR: Учитываются, есть обратные показатели?

Я, видите ли, тоже большой поклонник этого браузера, и как-то тоже сочинил небольшой скриптик для бэкапа 'всего этого' на случай непредвиденных ситуаций, таких как переустановки системы и пр...
Единственно что, этот скриптик был (есть) заточен именно под мою машину, т.е. там были предварительно прописаны пути сохранения, и он 'выдирал' необходимые папки/файлы из всех каталогов, с какими связан сам браузер и все это дело копировал в папку назначения, причем упаковывая в архив (RAR).

Смысл в чем - я заранее уже закладывал в скрипт все необходимые пути. Но Ваша библиотека призвана быть универсальной (своего рода), т.е. находить все сопряженные с самим браузером папки и файлы.

Выделим один (но далеко не единственный) случай:
функция
Код: AutoIt [Выделить]
_OperaGetProfileDir()

:

Код: AutoIt [Выделить]
#include <Opera.au3> ; Я так переименовал UDF (оригин: Opera_Library...)
#include <Array.au3>

; Return errors:
;             1 - $sOpDir (Opera Dir) not found.
;             2 - Opera6.ini (main Opera's config file) not found.
;
; My Profile ini = C:\Documents and Settings\Admin\Application Data\Opera\Opera\profile\opera6.ini

;$sOpDir = _OperaGetDir()
$ret = _OperaGetProfileDir()
MsgBox(0, '', 'State: ' & @error & @CRLF & 'Return: ' & $ret)


Возвращает результат:

Код: AutoIt [Выделить]
@error = 2


 т.е. в контексте:  "Opera6.ini (main Opera's config file) not found."

или мой (в данном случае) путь:
Код: AutoIt [Выделить]
; C:\Documents and Settings\Admin\Application Data\Opera\Opera\profile\opera6.ini


не найден...







« Последнее редактирование: Июнь 13, 2010, 19:27:07 от Vendor »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7814

  • Автор темы
  • Репутация: 2282
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Vendor  [?]
Цитировать
_OperaFindDir
Эта функция находит папки установки Opera, зачем там профили?

Цитировать
Выделим один (но далеко не единственный) случай
Мда, проблема в том что при мультипользовательском режиме папка profile не присутствует, этот баг можно исправить заменив в библиотеке функцию _OperaGetProfileDir:

Код: AutoIt [Выделить]
Func _OperaGetProfileDir($sOpDir = -1)
    If Not __PathIsOperaDir($sOpDir) Then
        $sOpDir = _OperaGetDir()
    EndIf
   
    If @error Then
        Return SetError(1, 0, "")
    EndIf
   
    Local $sOperaPrefs_FileName = __GetOperaPrefsFileName($sOpDir, 0)
   
    If _OperaMultiUserModeIsOn($sOpDir) Then
        $sOpDir = @AppDataDir & "\Opera\" & StringRegExpReplace($sOpDir, "^.*\\", "")
       
        If Not __PathIsOperaConfigFile($sOpDir & "\" & $sOperaPrefs_FileName) Then
            Return SetError(2, 0, "")
        EndIf
       
        Return $sOpDir
    Else
        If Not __PathIsOperaConfigFile($sOpDir & "\profile\" & $sOperaPrefs_FileName) Then
            Return SetError(2, 0, "")
        EndIf
       
        Return $sOpDir & "\profile"
    EndIf
EndFunc


Оффлайн Vendor [?]

  • Новичок
  • *
  • Сообщений: 70
  • Репутация: 8
  • Пол: Мужской
    • Награды
Цитировать
...этот баг можно исправить заменив в библиотеке функцию _OperaGetProfileDir:...
вот-вот-вот, теперь отрабатывает как надо. Если привязать остальные функции к этой, то в принципе можно будет сказать, что библиотека для ALL-юзеров  ;)


Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7814

  • Автор темы
  • Репутация: 2282
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Vendor  [?]
Цитировать
Если привязать остальные функции к этой, то в принципе можно будет сказать, что библиотека для ALL-юзеров
Они и так привязаны к ней.

Оффлайн k790 [?]

  • Новичок
  • *
  • Сообщений: 239
  • Репутация: 1
  • Пол: Мужской
    • Компьютерная-Лаборатория
    • Награды
Подскажите, как мне узнать пути оперы в %userprofile% ?
Подойдёт?
Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>
#include <Opera_Library.au3>


$OperaDir = _OperaGetDir()
$OperaProfileDir = _OperaGetProfileDir($OperaDir)
$OpTitle = _OperaGetTitle($OperaDir)
                MsgBox(4096, "5", $OperaProfileDir )
 

А то я вижу только в опере дир-оперу ас, а обычной оперы нет :(

Оффлайн k790 [?]

  • Новичок
  • *
  • Сообщений: 239
  • Репутация: 1
  • Пол: Мужской
    • Компьютерная-Лаборатория
    • Награды
Забыл написать, опера 11 , я так вижу на ней ещё никто не тестил?

Русское сообщество AutoIt

Re: Opera Library - Библиотека для работы с браузером Opera
« Ответ #14 Отправлен: Май 16, 2011, 21:04:52 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
78 Ответов
79461 Просмотров
Последний ответ Август 28, 2017, 14:05:13
от Garrett
3 Ответов
4634 Просмотров
Последний ответ Июнь 23, 2010, 23:13:51
от Medic84
11 Ответов
6676 Просмотров
Последний ответ Апрель 01, 2011, 12:26:00
от winstan
7 Ответов
4601 Просмотров
Последний ответ Май 29, 2011, 01:27:13
от CreatoR
1 Ответов
2295 Просмотров
Последний ответ Декабрь 23, 2011, 00:12:22
от Math
6 Ответов
7029 Просмотров
Последний ответ Октябрь 07, 2012, 18:22:00
от CreatoR
1 Ответов
1535 Просмотров
Последний ответ Сентябрь 26, 2015, 23:39:08
от alex33
0 Ответов
621 Просмотров
Последний ответ Сентябрь 26, 2015, 17:26:51
от Yashied
3 Ответов
2174 Просмотров
Последний ответ Декабрь 30, 2016, 17:06:52
от Dm666
6 Ответов
389 Просмотров
Последний ответ Ноябрь 25, 2017, 10:53:39
от TiranCool