+  HandyCache форум
|-+  Главная категория» Дополнения, плагины» Создание плагина
Имя пользователя:
Пароль:
Страниц: [1]   Вниз
  Отправить эту тему    Печать  
Автор Тема: Создание плагина  (Прочитано 5157 раз)
0 Пользователей и 1 Гость смотрят эту тему.
stealzy
Пользователь
**

Репутация: +1/-2
Offline Offline

Сообщений: 50


« : 18 Апрель 2014, 15:08:21 »

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

Кстати, а как указать относительный путь в lua? Скажем я хочу запустить .ехе в папке расширения, как?
hc.shell_execute(my.exe) не работает.
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +215/-4
Offline Offline

Сообщений: 6186


« Ответ #1 : 18 Апрель 2014, 16:49:05 »

Цитировать
Не подскажете как сторонней программой передавать данные в lua-расширение.
Можно передавать на НС http-запросы со специальными URL, которые расширение будет перехватывать и обрабатывать самостоятельно.
Цитировать
Кстати, а как указать относительный путь в lua? Скажем я хочу запустить .ехе в папке расширения, как?
Переменная hc.script_name содержит путь к файлу расширения.
Сообщить модератору   Записан
stealzy
Пользователь
**

Репутация: +1/-2
Offline Offline

Сообщений: 50


« Ответ #2 : 18 Апрель 2014, 20:13:14 »

Да, я читал док. Просто я не понял, как это сделать на lua
hc.shell_execute(hc.script_name..'\hcHotKeys+.exe')
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +215/-4
Offline Offline

Сообщений: 6186


« Ответ #3 : 18 Апрель 2014, 20:17:56 »

Как-то так (работоспособность не проверял):
hc.shell_execute(hc.script_name:match('.*\\')..'hcHotKeys+.exe')
Сообщить модератору   Записан
stealzy
Пользователь
**

Репутация: +1/-2
Offline Offline

Сообщений: 50


« Ответ #4 : 18 Апрель 2014, 20:54:40 »

Ура, спасибо! Ща переделаю плагин.
Если знаете толковый ман по Lua, буду признателен)
Сообщить модератору   Записан
stealzy
Пользователь
**

Репутация: +1/-2
Offline Offline

Сообщений: 50


« Ответ #5 : 19 Апрель 2014, 08:37:31 »

Все таки я не понимаю, почему можно создать только одно постоянное(причем скрытое в моем случае) окно расширения?
Это намеренно сделано?
Посылать http запросы для общения с плагином не хотелось бы(firewall, etc).
« Последнее редактирование: 19 Апрель 2014, 08:50:08 от stealzy » Сообщить модератору   Записан
stealzy
Пользователь
**

Репутация: +1/-2
Offline Offline

Сообщений: 50


« Ответ #6 : 21 Апрель 2014, 14:14:48 »

Разобрался, что ShowModal разрешает только 1 окно, но почему не показывает Show? Окно появляется и тут же исчезает.
--------------------------------------------------------------
Не выходит подделать заголовок ответа сервера(Response Headers).
Я пишу, скажем:
Код:
function Request()
hc.answer_header = 'HTTP/1.1 200 OK\nDate: Mon, 21 Apr 2014 09:56:54 GMT\nServer: Apache/1.3.37\nLast-Modified: Mon, 21 Apr 2014 03:57:08 GMT\nContent-Type: text/html; charset=koi8-r\nConnection: close'
hc.answer_body ='<html><html><head>\n<title>Title</title></head>\n<body>\nHello!<br>\n</body>\n</html>'
end
— Сервер вернул недопустимый или нераспознанный ответ. (WinHttp)
« Последнее редактирование: 21 Апрель 2014, 14:26:26 от stealzy » Сообщить модератору   Записан
Михаил
Модератор
*****

Репутация: +291/-14
Offline Offline

Сообщений: 5177



« Ответ #7 : 21 Апрель 2014, 20:01:25 »

Попробуйте завершить заголовок строкой '\n\n'
Сообщить модератору   Записан
stealzy
Пользователь
**

Репутация: +1/-2
Offline Offline

Сообщений: 50


« Ответ #8 : 22 Апрель 2014, 08:53:32 »

Спасибо, помогло.
Фаерфокс и Опера сразу показывают все. В мониторе все ок.

Но вот ИЕ ждет 15-30 секунд, прежде чем показать ответ.
И WinHttp вообще пишет, что время ожидания истекло и выходит с ошибкой, либо тоже ждет.
Чего они ждут? Я вписал
Код:
hc.action = 'stop'
, НС ответил им
Цитировать
Connection: close
, но нет, ждут!

весь код:
Код:
function RequestHeaderReceived()

hc.action = 'stop'
hc.answer_header = 'HTTP/1.1 200 OK\nDate: Mon, 21 Apr 2014 09:56:54 GMT\nServer: Apache/2.2.0\nLast-Modified: Mon, 21 Apr 2014 03:57:08 GMT\nContent-Type: text/html; charset=koi8-r\nConnection: close\n\n\n'
hc.answer_body = '<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN"><!-- tiny web site --><html>\n<html><head>\n<title>Title</title></head>\n<body>\nHello!<br>\n</body>\n</html>'

end


* 22,04,14(12-20-09).png (21.43 Кб, 470x517 - просмотрено 94 раз.)
« Последнее редактирование: 22 Апрель 2014, 10:18:27 от stealzy » Сообщить модератору   Записан
stealzy
Пользователь
**

Репутация: +1/-2
Offline Offline

Сообщений: 50


« Ответ #9 : 22 Апрель 2014, 11:05:52 »

Если оборвать соединение(hc.client_disconnect), то браузер без конца пытается дозвониться.
Интересно, НС подменяет заголовок ответа, который я отсылаю.
Вот что я шлю:
Код:
HTTP/1.1 200 OK
Date: Mon, 22 Apr 2014 12:56:54 GMT
Server: Apache/2.2.0
Last-Modified: Mon, 21 Apr 2014 03:57:08 GMT
Content-Type: text/html; charset=koi8-r
Connection: close
А вот данные из лога:
Код:
HTTP/1.1 200 OK
Date: Mon, 22 Apr 2014 12:56:54 GMT
Server: Apache/2.2.0
Last-Modified: Mon, 21 Apr 2014 03:57:08 GMT
Content-Type: text/html; charset=koi8-r
Connection: keep-alive
Transfer-Encoding: chunked
Видно, что close заменен на keep-alive, и добавлена новая строка
« Последнее редактирование: 22 Апрель 2014, 11:26:57 от stealzy » Сообщить модератору   Записан
olDjeka
Постоялец
***

Репутация: +6/-0
Offline Offline

Сообщений: 117


« Ответ #10 : 22 Апрель 2014, 23:33:45 »

См. п.3, а для информации и всю страницу. И ещё (из личного опыта), иногда лучше использовать \r\n вместо \n, или проверять как это выглядит в заголовке.
Сообщить модератору   Записан
Dimiyan
Новичок
*

Репутация: +0/-1
Offline Offline

Сообщений: 29


« Ответ #11 : 29 Ноябрь 2014, 22:00:03 »

Здравствуйте кто может помочь в написании несложного плагина? Хотел бы связать довнлоад менеджер с его грабером сайтов и хенди есть смельчаки?
Сообщить модератору   Записан
stealzy
Пользователь
**

Репутация: +1/-2
Offline Offline

Сообщений: 50


« Ответ #12 : 01 Февраль 2015, 00:32:12 »

Оказалось надо было вынести подмену hc.answer_header и hc.answer_body в отдельную фукцию на событие BeforeAnswerHeaderSend.
Что и логично, ведь я подменяю их для браузера, а не для сервера.
2 Dimiyan: А в чем проблема? Указать в DM работать через прокси HC?
Сообщить модератору   Записан
Страниц: [1]   Вверх
  Отправить эту тему    Печать  

 
Перейти в: