• 22.05.2012, 12:19:12 *
  • Добро пожаловать, Гость
Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

В связи с просьбой представителя Opera Software к нашей команде, мы вынуждены запретить обсуждение и наличие неофициальных сборок на нашей конференции.
Сборка в данном виде нарушает новое лицензионное соглашение Opera Software, и команда AC Team не будет нести ответственность за эти нарушения.

Тема, посвящённая OperaAC_Unofficial закрыта, также и другие темы касающиеся данной сборки будут закрываться без предупреждения.

collapse
* Голосование
  • Нравится ли Вам Opera AC?
  • Dot Конечно, она просто супер!
  • 1352 (77%)
  • Dot В целом да, но много лишнего..
  • 311 (17%)
  • Dot Для ознакомительных целей
  • 53 (3%)
  • Dot Нет
  • 20 (1%)
  • Dot А что это такое?
  • 16 (0%)
  • Проголосовало пользователей: 1748
  • Смотреть тему

Реклама:
загрузка...

Автор Тема: Добавить опцию "соварачивать при закрытии"  (Прочитано 3801 раз)

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

spa

Если уж совсем по народному то, сделать так чтобы при нажатие "красненького" крестика опера сварачивалась в трей. Очевидно что для организации такого функционала надо перехватить сообщение о зарытие главного окна, там проести какието действи(уж не знаю как вы оперу в трей сворачиваете). Я был бы просто счастлив ))
Записан

Gladman

  • Админ
  • *
  • Репутация: 10
  • Оффлайн Оффлайн
  • Пол: Мужской
  • Сообщений: 559
  • Версия OAC: 3.7.7
  • Версия Opera: 10.10
ГрамотЕй! Тьфу, так и чешутся руки взять красную ручку и ошибки поисправлять >:(
Имейте уважение к пользователям форума. В Opera AC давно есть кнопка проверки орфографии.

Да вообще-то кнопка "Свернуть в трей" давно существует (Сервис-Оформление-Кнопки-Мои кнопки). Возьми, да перенеси её как можно ближе к "красненькому крестику".
« Последнее редактирование: 07.04.2009, 11:35:45 от Gladman »
Записан
Первое правило пользователя Opera AC:
"Если что-то не работает (не отображается) - настрой блокировки рекламы"
       
Видеоуроки работы с Opera

spa

  • Пользователь
  • **

  • Автор темы
  • Репутация: 0
  • Оффлайн Оффлайн
  • Сообщений: 12
Уж ладно я троешник (я про орфографию), и разгельдяй. Но вы както не внимательно читали вопрос/предложение. Как раз очень важно чтобы не другой "кнопкой сворачивал" а при поступлении сообщения о закрытии окна WM_CLOSE, я бы с привеликим удовольствием сделал это сам, но есть проблемма что я бы хотел совместимости с AC. так что если нужна помощь  я скажу что да как, или можно еще проще вы показываете мне как вы програно сварачиваете оперу в трей, я вам готовый модуль. Мне просто не очень охото рзбирать во всей проделанной вами работой, да и не к чему, я просто хочу такую фичу, уж опционально она не кому не повредит.
Записан

CreatoR

  • AC Team
  • Админ
  • *
  • Репутация: 43
  • Оффлайн Оффлайн
  • Пол: Мужской
  • Сообщений: 2949
  • CreatoR - Это не Ник, CreatoR - Это стиль Жизни!
    • WWW
spa
Чтобы подобное реализовать, нужно постоянно иметь запущенный процесс, который будет отслеживать попытку закрытия оперы, я уже не говорю о сложности это отследить и предотвратить.

06:29:40
Цитировать
как вы програно сварачиваете оперу в трей
Разве что только посыланием нужных клавиш (Ctrl + H).

Цитировать
я вам готовый модуль
Интересно было бы посмотреть как оно сработает...
Записан
Читаем FAQ по OAC! и Список изменении OAC перед тем как задать вопрос.



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

spa

  • Пользователь
  • **

  • Автор темы
  • Репутация: 0
  • Оффлайн Оффлайн
  • Сообщений: 12
CreatoR
Я вам дам код который надо будет вставить в OperaAC.exe (после запска оперы, точнее после появления главного окна) и dll которую надо будет положить в Opera\Misc. Думаю тк у меня сейчас много дел займет неделю. Запущенный процесс держать не надо.
Записан

CreatoR

  • AC Team
  • Админ
  • *
  • Репутация: 43
  • Оффлайн Оффлайн
  • Пол: Мужской
  • Сообщений: 2949
  • CreatoR - Это не Ник, CreatoR - Это стиль Жизни!
    • WWW
spa
Мне скорее концепция нужна, чем готовое решение. Я не думаю что будет правильным добавлять dll'ку только лишь из за одной (не очень востребованной надо заметить) функции.
Записан
Читаем FAQ по OAC! и Список изменении OAC перед тем как задать вопрос.



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

spa

  • Пользователь
  • **

  • Автор темы
  • Репутация: 0
  • Оффлайн Оффлайн
  • Сообщений: 12
CreatoR
Без DLL внктри процесса opera не как не обойтись, но это и не важно по сути, просто потом расширять возможности этого модуля. Ща допишу и отправлю вам вместе с сорцами.
Записан

spa

  • Пользователь
  • **

  • Автор темы
  • Репутация: 0
  • Оффлайн Оффлайн
  • Сообщений: 12
Такс-с у меня возникла 1 проблемма, предлагаю заинтересованных разрабов стукнуть в асю или джаббер. Пишиье , отправлю личным сообщением.
Записан

spa

  • Пользователь
  • **

  • Автор темы
  • Репутация: 0
  • Оффлайн Оффлайн
  • Сообщений: 12
Как я и обещал все готово, правда это еще "альфа" хотя все должно работать, тестов я не проводил поэтому и альфа (проверял только на AC 3.3.6 Opera 9.64). ЗАпускаем start.exe после запуска оперы, и все. Сообщаем мне о багах!! Признаюсь пришлось повозиться ,очень сложно определить нужное окно, когда у оперы куча окон разных по функционалу, но с одинаковыми именами, и именами класса. Брать сдесь http://slil.ru/27441980 Если есть еще идееи которые надо воплотить, скажите мне мб что придумаю ))
Записан

CreatoR

  • AC Team
  • Админ
  • *
  • Репутация: 43
  • Оффлайн Оффлайн
  • Пол: Мужской
  • Сообщений: 2949
  • CreatoR - Это не Ник, CreatoR - Это стиль Жизни!
    • WWW
spa 10.04.2009, 10:22:12
Цитировать
отправлю вам вместе с сорцами
16:29:21
Цитировать
Брать сдесь
А где “сорц”? :)
Записан
Читаем FAQ по OAC! и Список изменении OAC перед тем как задать вопрос.



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

spa

  • Пользователь
  • **

  • Автор темы
  • Репутация: 0
  • Оффлайн Оффлайн
  • Сообщений: 12
ТЕсты проведу, код подправлю(пока трудночитаем от человека не равноо мне) и будет сорц . Предупреждаю чтобы разобраться надо иметь базовые понятия о механизмах ос WIndows, в часности Хуках, механизме оконных сообщений, динамических библиотек.
Записан

Lex1

CreatoR « Ответ #5: 09.04.2009, 13:13:55 »
Цитировать
Мне скорее концепция нужна
Вешается локальный хук (SetWindowsHookEx) с WH_CALLWNDPROC. В котором wm_close(?) заменяется на Ctrl+H.
Записан

CreatoR

  • AC Team
  • Админ
  • *
  • Репутация: 43
  • Оффлайн Оффлайн
  • Пол: Мужской
  • Сообщений: 2949
  • CreatoR - Это не Ник, CreatoR - Это стиль Жизни!
    • WWW
Lex1 01:06:46
Цитировать
Вешается локальный хук
Попробовал так:

#include <GUIConstants.au3>
#include <WindowsConstants.au3>
;

Global Const $WH_CALLWNDPROC = 4

$hWnd = WinGetHandle("[CLASS:OpWindow;TITLE:CBIT - Opera]")
$ThreadID = WinGetProcess($hWnd)

$Callback = DllCallbackRegister("_CallWndProc", "long", "int;wparam;lparam")
$HHOOK = DllCall("User32.dll", "hwnd", "SetWindowsHookEx", "int", $WH_CALLWNDPROC, _
"ptr", DllCallbackGetPtr($Callback), "hwnd", 0, "dword", $ThreadID)

Sleep(5000)

Func _CallWndProc($nCode, $wParam, $lParam)
If $nCode < 0 Then
Local $a_Ret = DllCall("user32.dll", "long", "CallNextHookEx", _
"hwnd", $HHOOK[0], "int", $nCode, "wparam", $wParam, "lparam", $lParam)

Return $a_Ret[0]
EndIf

Local $CWPSTRUCT = DllStructCreate("long lParam;long wParam;uint Message;hwnd hWnd", $lParam)
If @error Then Exit

If DllStructGetData($CWPSTRUCT, "Message") = $WM_CLOSE Then
ConsoleWrite("Send Ctrl + H here..." & @CRLF)
;Send("^h")
Return 1
EndIf

$CWPSTRUCT = 0
EndFunc

Func OnAutoItExit()
DllCall("user32.dll", "hwnd", "UnhookWindowsHookEx", "hwnd", $HHOOK[0])
DllCallbackFree($Callback)
EndFunc

С внешним окном не работает (процедура не регистрируется вовсе), а вот если использовать свой GUI и «GetCurrentThreadId», тогда отлавливает сообщения...
Записан
Читаем FAQ по OAC! и Список изменении OAC перед тем как задать вопрос.



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

spa

  • Пользователь
  • **

  • Автор темы
  • Репутация: 0
  • Оффлайн Оффлайн
  • Сообщений: 12
Lex1
Былобы всё так просто, я бы не мучался неделю. Все вы правильно говорите, но есть два НО хук WH_CALLWNDPROC не может не передавать сообщения дальше, те опера всеравно закроеться!! а если ставить  WH_GETMESSAGE  то WM_CLOSE вовсе не придёт!! так как некоторые сообщения приходят напрямую процедуре окна, а еще такая проблемма что у оперы много разных по функционалу окон с одинаковыми именами и одинаковыми именами классов. ТАк что не всё так просто как кажеться.

CreatoR
А мой мозг.. я не стал вчитываться, такие вещи на паскале писать имхо извращения, всетаки предлагаю, по этой части оставить меня. Загружать DLL и всё, если понадобиться еще функционал я с радостью помогу.
« Последнее редактирование: 13.04.2009, 05:05:15 от spa »
Записан

Lex1

CreatoR « Ответ #12: Сегодня в 04:21:10 »
Цитировать
С внешним окном не работает
Программа должна быть в виде dll, autoit это позволяет?

spa
Ясно, спасибо. Да, а без MSVCR90.dll там обойтсь нельзя?
Записан
 




Реклама:
загрузка...

Счетчик

Страница сгенерирована за 0.046 секунд. Запросов: 31.