|
А как реализовать CreateObject(позднее связывание) + WithEvents?
|
|||
---|---|---|---|
#18+
Смотрим на этот старый топик: Загрузить файл через IE, дождаться завершения и отловить если что ошибки Я немного поигрался. Вопрос в принципе решается. Нужно реализовать такой код (смысл, чтоб окно IE было закрыто в любом случае, на экран выводится только диалог сохранения, при ошибке невидимое окно IE надо закрыть): Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Мне надо переписать этот код (события!!!) для позднего связывания : Код: vbnet 1. 2.
Вообще говоря мне это нужно сейчас сделать в VB.Net а не в VB6. Но решил поиграться сначала в VB6. Использовать раннее связывание в .Net я не рискну - там для COM версии автоматически не подставляются если делать ранние ссылки. Смотрел еще на тамошний объект WebBrowser, но что-то он мне для этой задачи не нравится. Создал тему в .Net: Вызов стандартного окна загрузки IE но никто ничего не отвечает. Решил здесь спросить. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2015, 12:22 |
|
А как реализовать CreateObject(позднее связывание) + WithEvents?
|
|||
---|---|---|---|
#18+
авторМне надо переписать этот код (события!!!) для позднего связывания:зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2015, 12:34 |
|
А как реализовать CreateObject(позднее связывание) + WithEvents?
|
|||
---|---|---|---|
#18+
Antonariy, Я ж написал. >Использовать раннее связывание в .Net я не рискну - там для COM версии автоматически не подставляются если делать ранние ссылки. На примере ADODB уже проверял. В проекте ссылаешься на одну версию, он ровно ее и хочет. Т.е. добавлю ссылку, а на другом компе сглючит. (В VB6 в этом плане автоматика, а в .Net ее нет). А CreateObject с гарантией прокатывает и там и тут. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2015, 13:12 |
|
А как реализовать CreateObject(позднее связывание) + WithEvents?
|
|||
---|---|---|---|
#18+
Дмитрий77, не знаю, на днях буду пробовать, там какой-то хакер создал браузер на вба, там главное нет этого ... Loop при открытии страниц, ну и без ишачка может обойдёмся, главное чем зацепило, автор пишет, можно делать практически всё...может опробуете, или свой напишите ишачок ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2015, 15:21 |
|
А как реализовать CreateObject(позднее связывание) + WithEvents?
|
|||
---|---|---|---|
#18+
катастрофаДмитрий77, не знаю, на днях буду пробовать, там какой-то хакер создал браузер на вба, там главное нет этого ... Loop при открытии страниц, ну и без ишачка может обойдёмся, главное чем зацепило, автор пишет, можно делать практически всё...может опробуете, или свой напишите ишачокЧто-то весна у Эндрю в этом сезоне рано наступила ) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2015, 15:23 |
|
А как реализовать CreateObject(позднее связывание) + WithEvents?
|
|||
---|---|---|---|
#18+
> Дмитрий77, > Мне надо переписать этот код (события!!!) для позднего связывания: > > Dim TheBrowser as Object > Set TheBrowser = CreateObject("InternetExplorer.Application") Стандартный решение: Код: vbnet 1. 2. 3. 4. 5.
Не работатет. Причина. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2015, 19:28 |
|
А как реализовать CreateObject(позднее связывание) + WithEvents?
|
|||
---|---|---|---|
#18+
Дмитрий77, вот ссылка, находил для другого форума, сам не пробовал COM: Handle Late-bound Events within Visual Basic Using an ATL Bridge ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2015, 22:11 |
|
А как реализовать CreateObject(позднее связывание) + WithEvents?
|
|||
---|---|---|---|
#18+
скукотища Код: vbnet 1.
скукотища, Казанский ConnectObject откуда берете? WScript? Кстати как добыть? Ссылка на еще один COM? Фигово. >Использовать раннее связывание в .Net я не рискну - там для COM версии автоматически не подставляются если делать ранние ссылки. Поясню еще раз. Если раннее связывание забабахать в .Net, то оно конечно на developer компе заработает. А потом когда конвертануть код x86-> x64, поменять версию .Net (?), перенести на другой комп (я пробовал с 8.1 на XP), то имеем: Невозможно загрузить файл или сборку "Interop.SHDocVw, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null" или один из зависимых от них компонентов. Сборка создана в более поздней версии среды выполнения чем текущая, и не может быть загружена. Нельзя в .Net так вольно ссылки на COM-ы делать. В VB6 еще как правило прокатывает (не уверен что всегда). А вот CreateObject("InternetExplorer.Application") волшебно сработает на любой OS и под 64-битным кодом тоже (ну если конечно есть 64-битная реализация для COM так понимаю). Но нужны события. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2015, 22:28 |
|
А как реализовать CreateObject(позднее связывание) + WithEvents?
|
|||
---|---|---|---|
#18+
Дмитрий77, ConnectObject из WScript. Но, с объектом InternetExplorer.Application эта радость не работает. Посмотри ссылку в 17233336 . ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2015, 22:56 |
|
А как реализовать CreateObject(позднее связывание) + WithEvents?
|
|||
---|---|---|---|
#18+
скукотища, А зачем тогда смотреть, если не работает? Зачем себя этим грузить? Тем более слово WScript радости не особо внушает само по себе. Тем более что мне это надо воткнуть в .Net. Попробую еще с .Net -WebBrowser поиграться. Но он похоже вообще события не генерирует, если делать .Navigate во внешнем окне (вызывает именно новое окно IE). А аналога именно InternetExplorer (а не WebBrowser) в .Net-классах походу нет. Т.е. свой COM-полуфабрикат я конечно могу использовать и в .Net, но без событий, т.е. без TheBrowser.Quit в случае ошибки - окно IE останется висеть. Подозреваю что этим все опять и закончится. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2015, 23:11 |
|
А как реализовать CreateObject(позднее связывание) + WithEvents?
|
|||
---|---|---|---|
#18+
> Дмитрий77, > А зачем тогда смотреть, если не работает? Зачем себя этим грузить? Чтобы не искать несуществующую кошку в темной комнате. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2015, 00:21 |
|
А как реализовать CreateObject(позднее связывание) + WithEvents?
|
|||
---|---|---|---|
#18+
Дмитрий77, Обрати внимание на ссылку, данную Казанским. Я когда-то её копал, и вроде не увидел принципиальной невозможности реализовать то же на VB или VBA. Но забросил, за отсутствием острой необходимости. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2015, 05:00 |
|
А как реализовать CreateObject(позднее связывание) + WithEvents?
|
|||
---|---|---|---|
#18+
БенедиктОбрати внимание на ссылку, данную Казанским. Обратил. А на что конкретно смотреть? Статья старая, заумная и подссылки в ней не работают. Бенедиктне увидел принципиальной невозможности реализовать то же на VB или VBA. Мне нужно это реализовать в .Net. (в VB.Net) В VB6 острой необходимости в позднем связывании в общем-то нет. Потому что VB6 автоматически подставляет последнюю имеющуюся на данном компе версию COM-компонента. А в .Net с этим похоже задница, какую версию COM при разработке указал, на ту версию он и создаст обертку и ее же требует. Для системных COM (которые есть на любом компе/OS, но при этом версии прыгают) это неприемлимо. Ну я рискнул создать в .Net-разделе похожую тему , но от тамошних товарищей дождаться путных ответов вероятность мала, в основном только язвят. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2015, 15:03 |
|
А как реализовать CreateObject(позднее связывание) + WithEvents?
|
|||
---|---|---|---|
#18+
Дмитрий77, Возможно, если конечно использование IE не является обязательным условием, а цель - скачивание файла с web ресурса в "тихом режиме", Вам подойдет такой вариант: для собственно скачивания файла воспользоваться методом DownloadFile класса WebClient . Проект скомпилировать с опцией Any CPU , что должно решить проблему битности. А также выбрать целевую версию .NET 2.0 , которая должна будет работать на всех (почти) устройствах где есть хоть какая-то .NET Framework. А если воспользоваться try/catch, то в случае ошибки будет возвращаться exception типа WebException или в редких случаях NotSupportedException. Например, класс, реализующий такую идею, мог бы выглдяеть так на C# (полагаю, переписать на VB.NET не должно составить большого труда): Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
А использование класса так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2015, 19:51 |
|
А как реализовать CreateObject(позднее связывание) + WithEvents?
|
|||
---|---|---|---|
#18+
iMrTidyесли конечно использование IE не является обязательным условием, а цель - скачивание файла В данном примере с IE обязательным условием таки является использование IE для скачивания файла (в "громком" режиме, но без вывода фонового окна самого IE). Но в этом примере на события IE можно было бы и забить (3 года назад так и сделал). Дело в том, что у меня есть другие системные COM с которыми я работаю, которые не заменишь на .Net-классы и для которых забить на события не получится. Поэтому я и вцепился в тему "Позднее связывание + события". Но похоже вопрос решить удалось (именно на примере IE), спасибо Antonariy и Изопропилу за поддержку. 17235746 Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.
В VB6 как сделать не знаю, но такой цели и не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2015, 23:21 |
|
А как реализовать CreateObject(позднее связывание) + WithEvents?
|
|||
---|---|---|---|
#18+
Дмитрий77, Могу предложить такой вариант на скорую руку: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58.
using System; Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 01:29 |
|
|
start [/forum/topic.php?fid=60&msg=38874062&tid=2156043]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 156ms |
0 / 0 |