The My Opera forums have been replaced with forums.opera.com. Please head over there to discuss Opera's products and features

See the new Forums

Как запустить программу из Opera?

Forums » Помощь: вопросы и проблемы » Расширения и виджеты Opera

You need to be logged in to post in the forums. If you do not have an account, please sign up first.

Go to last post

4. November 2011, 18:09:57

ds007007

Posts: 6

Как запустить программу из Opera?

Здравствуйте. Подскажите новичку, как запустить стороннюю программу по нажатии кнопки своего расширения из Opera. Как вариант, можно запускать из скрипта:
wsh=WScript.CreateObject('WScript.Shell');
wsh.Run('"notepad"');
но проблема в том, что этот скрипт не работает из html.
Может кто сталкивался с такой задачей? Помогите пожалуйста.

4. November 2011, 21:58:43

komokdj

Posts: 212

Насколько мне известно, запуск внешних программ из расширений Оперы и из javascript невозможен из соображений безопасности.
Вы можете запускать внешние программы из меню Опера, если отредактируете стандартное меню (standard_menu.ini) или если создадите свои кнопки Опера (standard_toolbar.ini).
Делается путем включения в ini файл специальной команды, в простейшем случае такой
Item, "Title"="Execute Program, "путь к программе\имя программы.exe""

5. November 2011, 15:06:03

ds007007

Posts: 6

Спасибо, теперь буду знать, в какую сторону копать. Подскажите еще, как мне узнать папку Оперы (что-то вроде C:\Documents and Settings\User\Application Data\Opera\Opera 10 Preview)? Ведь она может отличаться в зависимости от версий и пользователей. Мне нужно указать ее при установке моего приложения для добавления кнопки.

5. November 2011, 16:34:10

komokdj

Posts: 212

Путь к папке профиля установленной (не портабельной, т.е. не USB) версии Opera:
"%APPDATA%\Opera\<папка установки Оперы. из реестра: ключ HKEY_CURRENT_USER\Software\Opera Software, параметр Last Install Path>"
Путь к папке профиля портабельной версии Opera просто: ".\profile"

5. November 2011, 17:06:28

ds007007

Posts: 6

в реестре у меня C:\Program Files\Opera 10 Preview\. оно не подходит. а вот первый вариант уже ближе к тому, что я ищу. он подойдет для любого варианта установленной Оперы?
и еще. как мне установить значок для кнопки независимо от текущего скина?

5. November 2011, 22:48:07 (edited)

komokdj

Posts: 212

"%APPDATA%\Opera\" не включает в себя последнюю часть пути:
"C:\Documents and Settings\User\Application Data\Opera\Opera 10 Preview"
Чтобы получить полный путь профиля Opera, рекомендую все таки прочитать параметр из реестра. Вместо Last Install Path лучше использовать более универсальный параметр реестра Last CommandLine v2. Чтобы получить полный путь к профилю, используйте что-то типа этого VBS:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.Shell")
Opera=WshShell.RegRead("HKCU\Software\Opera Software\Last CommandLine v2")
OperaDir=Left(Opera, Instr(1,Opera,"opera.exe")-1)
If Not(FSO.FolderExists(OperaDir+"profile")) Then
OperaDirName=Split(OperaDir, "\")
OperaDir =OperaDirName(Ubound(OperaDirName)-1)
OperaDir=WshShell.ExpandEnvironmentStrings("%appdata%")+"\Opera\"+OperaDir
Else 
OperaDir=OperaDir+"profile"
End If

Значок для кнопки советую выбрать стандартный, уже имеющийся во всех скинах, например History:
Button5, "Notepad"="Execute program, "Notepad.exe", , ,History"

6. November 2011, 11:57:54 (edited)

ds007007

Posts: 6

Этот скрипт охватывает все случаи установленной Оперы, какие только могут быть? (Кстати, спасибо за скрипт:) И если уж на то пошло, путь экзешника браузера лучше брать из HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet. ТАм по идее регистрируются все браузеры:) ) И когда папка Оперы может находиться в C:\Program files\Opera\profile ? И вообще, вот здесь же opera:config#UserPrefs|OperaDirectory есть искомый путь, где-то же его Опера хранит???!!!
Кстати насчет иконок. Если я, например, добавляю кнопку отсюда http://moemesto.ru/help/button.html?browser=opera, то ее значок даже при смене скина остается прежним. В чем секрет? Может такой фокус пройдет и для моей кнопки?

6. November 2011, 14:26:35

komokdj

Posts: 212

Originally posted by ds007007:

И когда папка Оперы может находиться в C:\Program files\Opera\profile

В случае однопользовательской установки более старой версии программы. Также папка профиля Оперы может находиться в директории самой программы в случае установки портабельной версии (так называемой USB).
Путь лучше брать откуда я сказал. Там прописывается любой вариант установленной Оперы, правда не сразу после установки, а после первого запуска.
Часть путей, в том числе путь к файлам меню и тулбара опера хранит в файле operaprefs.ini. Но сам файл находится в директории профиля. Чтобы его найти нужно использовать скрипт.

6. November 2011, 15:05:45

komokdj

Posts: 212

Originally posted by ds007007:

Если я, например, добавляю кнопку отсюда http://moemesto.ru/help/button.html?browser=opera, то ее значок даже при смене скина остается прежним. В чем секрет?

Это не настоящая кнопка, а закладка. Её иконка хранится в папке icons, где и другие иконки закладок.

6. November 2011, 18:41:22

SATAB

Momentator

Posts: 4974

А точнее - это букмарклет.
Моя сторінка на MyOpera • Я •          F Ukraine - тримаємо порох сухим!
↑ На букву Я целить мышкин указатель! ↑
Использую Opera 10.10 build 1893 - новыми лишь поиграться можно
RIP
Opera
30.08.1995 - 13.02.2013

-> Link <-
☺ Я ВКонтакт лишь по нужде хожу! ☺      
У меня всё работает! Догадайтесь - через что!
► Дом - 30 Мбит\с, работа - EDGE - до ~100 Кбит\с ◄
Что делать, если опера зависает и сбоит

6. November 2011, 19:41:12

ds007007

Posts: 6

Значит этот фокус не пройдет...
А как программно можно узнать версию установленной Оперы? Или как хотя бы распознать оперу 10 версии и выше?

6. November 2011, 20:35:17

komokdj

Posts: 212

Originally posted by ds007007:

как программно можно узнать версию установленной Оперы?


Добавь в мой скрипт строчку
MsgBox FSO.GetFileVersion(Opera)

11. November 2011, 17:45:56

ds007007

Posts: 6

Спасибо за помощь smile

Forums » Помощь: вопросы и проблемы » Расширения и виджеты Opera