Страница: 1 | 2 |
Вопрос: ITaskBar3
Добавлено: 20.01.10 22:31
Автор вопроса:
Winand | Web-сайт: winandfx.narod.ru
Плохо понимаю интерфейсы и всё такое.
http://msdn.microsoft.com/en-us/library/dd391698(VS.85).aspx
Возможно ли в vb6 получить доступ к этой функции? При том желательно безо всякого раннего связывания обойтись, чтобы можно было сделать обработчик ошибок и запускать под WinXP
Ответы
Всего ответов: 20
Номер ответа: 1
Автор ответа:
Sharp
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 21.01.10 02:24
Интерфейс унаследован от IUnknown. Придется писать грязные ассемблерные хаки.
Номер ответа: 2
Автор ответа:
VβÐUηìt
![]()
![]()
![]()
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #2
Добавлено: 21.01.10 09:44
Уэээ... Если вдуматься в суть дела, и переформулировать вопрос, чувак спрашивает, как работать с таскбаром Windows 7, а именно - использовение иконки программы как прогрессбара.
Номер ответа: 3
Автор ответа:
Winand
![]()
![]()
![]()
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #3
Добавлено: 21.01.10 12:25
VBD, а ты знаешь как?) Я так понимаю, из-за интерфэйса сложности возникают
Sharp, их никто не написал еще? они не универсальны? Если два нет, то наверное мне не добраться туда
Номер ответа: 4
Автор ответа:
VβÐUηìt
![]()
![]()
![]()
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #4
Добавлено: 21.01.10 13:24
Видел для C#. Щас не нашел, но нашел для C++
http://msdn.microsoft.com/en-us/magazine/dd942846.aspx
Только переписать на VB6 и все. И вообще я никогда не поверю, чтобы Microsoft делала на таком убогом уровне программирование своей очередной новой фичи.
Номер ответа: 5
Автор ответа:
EROS
![]()
![]()
![]()
![]()
Вопросов: 58
Ответов: 4255
Профиль | | #5
Добавлено: 21.01.10 14:34
http://msdn.microsoft.com/en-us/library/dd378460(VS.85).aspx
Номер ответа: 6
Автор ответа:
Winand
![]()
![]()
![]()
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #6
Добавлено: 21.01.10 14:45
Товарищи! Я читал обе статьи по ссылкам выше. Как я понимаю в explorerframe.dll имеется интерфейс ITaskbarList3, содержащий нужные функции.
Проблемы две: я плохо понимаю суть интерфейсов, я не знаю как добраться до функции из VB6
Номер ответа: 7
Автор ответа:
EROS
![]()
![]()
![]()
![]()
Вопросов: 58
Ответов: 4255
Профиль | | #7
Добавлено: 21.01.10 18:44
Ггггы)) Я ща попробовал на С# - забавная игрушка получилась!
Судя по сишным примерам
тебе надо копать в сторону CoCreateInstance чтобы создать экзепляр объекта который реализует этот интерфейс.. и уже с ним работать..
Номер ответа: 8
Автор ответа:
EROS
![]()
![]()
![]()
![]()
Вопросов: 58
Ответов: 4255
Профиль | | #8
Добавлено: 21.01.10 19:14
Cудя по всему тебе еще понадобится CLSIDFromString
Плюс проштудировать вот эту статейку http://vbrussian.com/Article.asp?ID=110
в частности раздел - Создаем COM-объект по его GUID-у... там более менее все описано..
ну и осталось дело за малым.. сесть и все написать.. )))
З.Ы Нужные GUID есть в документации
з.ы.ы Тебе нужен не ITaskBarList3 а ITaskBarList.. этот интерфейс дает полный доступ к TaskBar Extentions, а ITaskBarList3 - это всего лишь частный случай, прародитель...
Номер ответа: 9
Автор ответа:
EROS
![]()
![]()
![]()
![]()
Вопросов: 58
Ответов: 4255
Профиль | | #9
Добавлено: 21.01.10 19:31
Чтоб меньше искать было... Guid("56FDF344-FD6D-11d0-958A-006097C9A090"
вот этот интерфейс тебе нужен.. он дает доступ ко всем фичам таскбара
Номер ответа: 10
Автор ответа:
Sharp
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #10
Добавлено: 21.01.10 20:23
Создать нужный COM-объект легко, прочитав любой букварь по COM. А вот чтобы заюзать IUnknown-унаследованный интерфейс, в VB6 нужны хаки, описанные тут: http://www.vbstreets.ru/VB/Articles/65974.aspx
Номер ответа: 11
Автор ответа:
EROS
![]()
![]()
![]()
![]()
Вопросов: 58
Ответов: 4255
Профиль | | #11
Добавлено: 21.01.10 20:52
мда...
(( Без IDispatch реально танцы с бубном получаются..
Номер ответа: 12
Автор ответа:
Winand
![]()
![]()
![]()
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #12
Добавлено: 21.01.10 21:45
Вуухуу! Предвещается много кодинга и размышлений) Только я хотел написать, что не получается работать с объектом

 
im myObj As Object, IID_C1(15) As Byte
Call CLSIDFromString(StrPtr(CLSID), IID_C1(0))
Call CLSIDFromString(StrPtr(IID), IID_C2(0))
If Not (CoCreateInstance(IID_C1(0), 0&, CLSCTX_ALL, IID_C2(0), myObj) = 0&
Then _
Set myObj = Nothing
Set ObjectCreate = myObj
End Function
Как я понимаю мне нужен файл shobjidl.h из Win7 SDK, чтобы определить номера функций, но качать ради него ~4Гб вообще не хочется)
Номер ответа: 13
Автор ответа:
EROS
![]()
![]()
![]()
![]()
Вопросов: 58
Ответов: 4255
Профиль | | #13
Добавлено: 21.01.10 22:09
http://www.koders.com/noncode/fid66A0E1FAB1C94FB665CFA5236DA4CDAEA22742CE.aspx
Номер ответа: 14
Автор ответа:
Winand
![]()
![]()
![]()
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #14
Добавлено: 21.01.10 22:57
EROS, это из ReactOS, они еще далеко не полностью реализовали функциональность винды.
Вот значит я нашел файлик: http://www.openwatcom.org:4000/@md=c&cd=//&cdf=//depot/openwatcom/bld/w32api/include/shobjidl.mh&ra=s&rc=s&c=LT9@//depot/openwatcom/bld/w32api/include/shobjidl.mh?ac=64
Написал класс:
Проект целиком: http://rghost.ru/870020
Проблема в том, что не получается вызвать SetProgressValue, хотя SetProgressState работает как надо.
В SetProgressValue параметры типа ULONGLONG (8 байт?), что я туда только не передавал, и currency и double и arr(7) as byte
http://msdn.microsoft.com/en-us/library/dd391698(VS.85).aspx
Номер ответа: 15
Автор ответа:
Winand
![]()
![]()
![]()
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #15
Добавлено: 22.01.10 02:13
http://rghost.ru/871119 Вроде всё самое гламурное реализовал)
Overlay иконки, всплывающие подсказки, кнопки (с обработкой событий от них), выбор области отображаемой на тамбнейле и прогресс
С SetProgressValue сделал так:
Всё. Мишн комплитед. EROS, Sharp, спасибо вам