Плагин для Download Master

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16475
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Плагин для Download Master

Сообщение Хакер » 24.12.2012 (Пн) 6:50

Дотнета у меня нет.
Тему я попробовал читать, но ничего не понял — отдельный вырванный из контекста беседы пост не даёт представления. А читать всю тему мне лень/некогда.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 24.12.2012 (Пн) 7:20

Хакер писал(а):Дотнета у меня нет.

Ну ты даёшь :shock:

Скрин, каждое описание обрабатывает щелчок мышью:
DM DownloadsList.png
DM DownloadsList.png (54.73 Кб) Просмотров: 5123

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 24.12.2012 (Пн) 21:15

Форму можно показать с помощью WinApi (ShowWindow Frm.hwnd, SW_SHOWNA), но при этом она обязательно должна быть закрыта (Unload Frm) в IDMPlugIn_BeforeUnloadNotify, иначе всё падает при выходе из DM.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Плагин для Download Master

Сообщение ger_kar » 24.12.2012 (Пн) 21:47

А если стандартным способом показывать и потом также по IDMPlugIn_BeforeUnloadNotify Закрывать все равно падает?
Бороться и искать, найти и перепрятать

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 24.12.2012 (Пн) 22:05

ger_kar писал(а):А если стандартным способом показывать

Стандартный способ сам падает с написанным выше сообщением про немодальные формы.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 25.12.2012 (Вт) 19:54

Хакер, расскажи что-нибудь по теме ;)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16475
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Плагин для Download Master

Сообщение Хакер » 25.12.2012 (Вт) 19:55

Я так не могу.
Нужен конкретный вопрос.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 25.12.2012 (Вт) 20:24

Хакер писал(а):Нужен конкретный вопрос.

Да их тут полно можно набрать:
  • Ты говорил, что возможны другие варианты вывода. Какие? Для чего они применимы? Применимы ли они для получения чего-то типа того, что на скриншоте?
  • Почему всё падает, если на момент выхода из DM открыта форма? Это специфика VB, Делфи или взаимодействия DM с плагинами? Является ли это той технической причиной, из-за которой показ немодальной формы средствами VB невозможен? Сейчас убедился, что чтобы не падало достаточно вызвать Frm.Hide. Почему именно видимая форма вызывает ошибку?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16475
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Плагин для Download Master

Сообщение Хакер » 26.12.2012 (Ср) 22:19

Qwertiy писал(а):Применимы ли они для получения чего-то типа того, что на скриншоте?

А я вообще не понял, что за абракадабра на скриншоте.

Qwertiy писал(а):Почему всё падает, если на момент выхода из DM открыта форма?

Наверное потому, что незакрытое окно получает сообщение, обработка которого ведёт к обращению к какому-то «объекту», который был уже освобождён, удалён и т.п.

Qwertiy писал(а):Является ли это той технической причиной, из-за которой показ немодальной формы средствами VB невозможен?

Нет никакой технической причины невозможности немодального показа экземпляра формы средствами VB. Зато есть идеологическая.

Ещё раз повторяю: есть такая ошибка «Can't show non-modal form when modal form is shown» (или как-то так). Её суть заключается в том, что когда вы в проекте типа Standard EXE пытаетесь показать немодальное окно в то время, как уже открыто модальное, то происходит как раз эта ошибка.

Потому что если модальное окно открыто, и всё остальное жестко заблокировано, то совершенно абсурдно нарушать модальность показом параллельного немодального окна. В общем, я надеюсь, не нужно объяснять, почему не дают показать немодальный экземпляр формы, если уже есть открытый модальный? Не нужно? Хорошо.

Соответственно, чтобы не случилась такая катастрофа, как показ немодального окна во время отображения модального, сделана проверка на предмет того, нет ли уже открытых модальных окон. Проблема с DLL заключается в том, что DLL при показе немодального окна не имеет возможности проверить, а не показывается ли в данный момент чьё-то модальное окно? И поскольку возможности проверить, можно ли безопасно осуществить нужное нам действие, нет, то они решили вообще запретить производить это действие.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Плагин для Download Master

Сообщение ger_kar » 27.12.2012 (Чт) 10:05

Хакер писал(а): Проблема с DLL заключается в том, что DLL при показе немодального окна не имеет возможности проверить, а не показывается ли в данный момент чьё-то модальное окно? И поскольку возможности проверить, можно ли безопасно осуществить нужное нам действие, нет, то они решили вообще запретить производить это действие.
Все очень очень стремно, я тоже в ближайшем будущем хотел использовать FNDLL для подобных целей. Жалко что с VB'шными дллками столько ограничений.
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16475
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Плагин для Download Master

Сообщение Хакер » 27.12.2012 (Чт) 10:40

ger_kar писал(а):Все очень очень стремно, я тоже в ближайшем будущем хотел использовать FNDLL для подобных целей. Жалко что с VB'шными дллками столько ограничений.

В каких подобных? Если ты разрабатываешь систему подобного плагинного взаимодействия, то хост должен сам предоставлять плагину инструмнетарий для создания новых окон.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Плагин для Download Master

Сообщение ger_kar » 27.12.2012 (Чт) 10:57

Нет не плагинного. Это все нужно для форм отчетности, которые сами будут на Excel, но весь основной функционал хотел сделать в отдельной Dll, так как если его не выносить и реализовать на VBA, включая имеющиеся там формы, то возникает другая проблема - проблема защиты. А так (при выносе ее в Dll) на VBA останутся только переходники к основному функционалу в Dll. А о каком нормальном функционале может быть речь, если нормальную не модальную форму показать невозможно. Вот такая лажа.
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16475
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Плагин для Download Master

Сообщение Хакер » 27.12.2012 (Чт) 11:06

Кто вообще мешает использовать ActiveX DLL? Зачем надо использовать Native DLL для такой задачи?

ger_kar писал(а):А о каком нормальном функционале может быть речь, если нормальную не модальную форму показать невозможно.

Вообще то я в данном случае на стороне сложившейся обстановке. Не нужно показывать немодальную форму при открытом Excel. Ну и если уж очень хочется: что мешает делать так, как я сказал выше?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Плагин для Download Master

Сообщение ger_kar » 27.12.2012 (Чт) 11:17

Хакер писал(а):Кто вообще мешает использовать ActiveX DLL? Зачем надо использовать Native DLL для такой задачи?
Я так понимаю, что большой разницы не будет
Qwertiy писал(а):Ага, добавил вывод информации об ошибке:Non-modal forms cannot be displayed in this host application from an ActiveX DLL, ActiveX Control or Property Page.

Так как это ограничение самой ActiveX Dll, а не FNDLL, которая является надстройкой над ActiveX Dll, ну и кроме этого нативная библиотека гораздо удобнее в применении.
Хакер писал(а):Ну и если уж очень хочется: что мешает делать так, как я сказал выше?
Имелось ввиду это?
Хакер писал(а):то хост должен сам предоставлять плагину инструмнетарий для создания новых окон.
Если да, то что может предоставить Excel для создания таких окон?
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16475
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Плагин для Download Master

Сообщение Хакер » 27.12.2012 (Чт) 11:42

ger_kar писал(а):Я так понимаю, что большой разницы не будет

Разница в том, что есть две версии FNDLL, и обе можно считать бажными. Народ какими-то пользуется, хотя я у себя с сервера удалил дистрибутив FNDLL, и даже не могу разобраться с исходниками: есть два пакета, и сравнение их WinDiff-ом не позволяет понять, какая из версий новее и с какой стоит работать. На дворе 2013 года, а исходники были написаны чуть не не за одну ночь в 2007 году.

ger_kar писал(а):ну и кроме этого нативная библиотека гораздо удобнее в применении.

Нет. И вообще мало смысла использовать нативный интерфейс для связывания двух целиком и полностью COM-основанных модулей.

ger_kar писал(а):Если да, то что может предоставить Excel для создания таких окон?

Ну в Excel\VBA же есть свои формы?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Плагин для Download Master

Сообщение ger_kar » 27.12.2012 (Чт) 11:52

Хакер писал(а):Нет. И вообще мало смысла использовать нативный интерфейс для связывания двух целиком и полностью COM-основанных модулей.
Ну с нативным интерфейсом написал функцию и готово, а с использованием ActiveX Dll придется потратить уйму времени на написание в принципе не нужных классов.
Хакер писал(а):Ну в Excel\VBA же есть свои формы?
Есть, но они жутко неудобные и стремно выглядят. XP стиль не поддерживают, массивы контролов тоже и к тому же хотелось все спрятать в недра Dll
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16475
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Плагин для Download Master

Сообщение Хакер » 27.12.2012 (Чт) 11:56

ger_kar писал(а):Ну с нативным интерфейсом написал функцию и готово, а с использованием ActiveX Dll придется потратить уйму времени на написание в принципе не нужных классов.

Это называется «я не хочу думать, проектировать, мыслить, хочу всё делать тупо и упрощённо».

ger_kar писал(а):Есть, но они жутко неудобные и стремно выглядят.

Чем? Тебе её использовать только как контейнер.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 27.12.2012 (Чт) 14:42

Чем плох вариант с показом через WinApi? Что, у этого могут быть негативные последствия?

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Плагин для Download Master

Сообщение ger_kar » 27.12.2012 (Чт) 16:36

Qwertiy писал(а):Чем плох вариант с показом через WinApi? Что, у этого могут быть негативные последствия?
Надо протестировать на Excel :) .Что практика покажет.
Qwertiy писал(а):Это называется «я не хочу думать, проектировать, мыслить, хочу всё делать тупо и упрощённо».
Нет почему же я и подумать люблю, но там где это нужно, а зачем тратить время на бесполезную с моей точки зрения работу, когда его можно использовать с пользой в другом направлении.
Бороться и искать, найти и перепрятать

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Плагин для Download Master

Сообщение ger_kar » 29.12.2012 (Сб) 12:47

Вобщем протестировал я открытие немодальной формы из Excel VBA. Такая простейшая функция
Код: Выделить всё
Public Function Requisites() As Boolean

    frmRequisites.Show

End Function
Нормально открывает и отображает немодальную форму. Никаких ошибок при этом не возникает.
Бороться и искать, найти и перепрятать

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 29.12.2012 (Сб) 13:11

Эта функция на VBA или в dll?

PS: В предыдущем посте цитата не моя.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Плагин для Download Master

Сообщение ger_kar » 29.12.2012 (Сб) 15:06

Qwertiy писал(а):PS: В предыдущем посте цитата не моя.
Точно :oops:
Функция и сама форма в dll, а вызывается функция из кода Excel VBA. Правда есть одна лажа, эта форма никак не хочет дружить со стилями XP. Видимо в Dll, даже при наличии манифеста и вызова InitCommonControls/InitCommonControlsEx это нельзя сделать.
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16475
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Плагин для Download Master

Сообщение Хакер » 29.12.2012 (Сб) 15:08

ger_kar писал(а):Правда есть одна лажа, эта форма никак не хочет дружить со стилями XP. Видимо в Dll, даже при наличии манифеста и вызова InitCommonControls/InitCommonControlsEx это нельзя сделать.

Ты притворяешься или как? Эти заявления выглядят предельно странными в свете того, что я посвещал тебя в курс своего расследования на тему SxS-механизма и контекстов активации (activation context).
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16475
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Плагин для Download Master

Сообщение Хакер » 29.12.2012 (Сб) 15:09

ger_kar писал(а):Функция и сама форма в dll, а вызывается функция из кода Excel VBA.

Это не должно работать.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Плагин для Download Master

Сообщение ger_kar » 29.12.2012 (Сб) 15:26

Хакер писал(а):Это не должно работать.
Может и не должно, но работает, но без стилей.
Хакер писал(а):Эти заявления выглядят предельно странными в свете того, что я посвещал тебя в курс своего расследования на тему SxS-механизма и контекстов активации (activation context).
Да, только в самые вершки, статья на эту тему так и не появилась, а без статьи... Можно конечно самому предпринять попытку исследовать тоже самое, но это будет длинная песня. пожалуй это действительно выход. Буду почитать, что на эту тему есть в интернете на форумах. Спасибо за намек.
Бороться и искать, найти и перепрятать

Пред.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 4

    TopList  
cron