Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Windows7 taskbar И CBuilder 6

20K
10 августа 2010 года
InoY
75 / / 24.02.2008
Наткнулся вот на такую статейку:
www.rsdn.ru/article/winshell/taskbar7.xml

на мой взгляд там, довольно таки хорошо всё расписано, но как это реализовать в CBuilder 6, если это возможно конечно?
Страницы:
6
10 августа 2010 года
George
4.1K / / 05.01.2007
Это .NET платформа. На CBuilder 6 под эту платформу разрабатывать невозможно - там только Win32.
7
10 августа 2010 года
@pixo $oft
3.4K / / 20.09.2006
Ды нет,скорее всего можно.Например,MPC же написан без использования .NET'а,а поддерживает эту самую полосу прогресса.К сожалению,поиском помочь не могу…
6
10 августа 2010 года
George
4.1K / / 05.01.2007
Может быть не надо писать о том, чего не знаешь? Автор указал статью, в которой описана работа с панелью с использованием .NET библиотеки, CppB c .NET работать никогда не умел, да и щас не умеет, зачем писать что-то лишь ради того, чтобы писать?
7
10 августа 2010 года
@pixo $oft
3.4K / / 20.09.2006
Ты-то сам написал свой 1й ответ.ТС прекрасно мог прочитать,что там только для .NET и без этого
По-любому есть и другой механизм.Я всего лишь указал автору,что можно поискать ещё.COM-механизм поддерживается в BCB,ну и хостить .NET тоже никто не мешает
20K
10 августа 2010 года
InoY
75 / / 24.02.2008
Цитата: George
Автор указал статью, в которой описана работа с панелью с использованием .NET библиотеки



Ну не обязательно же придерживаться этой статьи на RSDN.:D

А вообще поверхностный поиск в гугле очень часто выдавал вот такую строчку:
«Windows API Code Pack для Microsoft .NET Framework»
Что как бы намекает…;)

Цитата: @pixo $oft
ну и хостить .NET тоже никто не мешает


С этого места поподробней!

6
10 августа 2010 года
George
4.1K / / 05.01.2007
Цитата: InoY
Ну не обязательно же придерживаться этой статьи на RSDN.:D


Тогда надо сразу об этом писать.

Цитата: InoY
А вообще поверхностный поиск в гугле очень часто выдавал вот такую строчку:
«Windows API Code Pack для Microsoft .NET Framework»
Что как бы намекает…;)


На что?

Цитата: InoY
С этого места поподробней!

Извращенничать собрались?

7
10 августа 2010 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: George
Извращенничать собрались?

Вовсе нет:)
MathCAD хостит же.Правда,там .NET только для интерфейса,но не суть
По вопросам хостинга–к hardcase'у.Собственно,он мне про это и рассказывал

6
10 августа 2010 года
George
4.1K / / 05.01.2007
Цитата: @pixo $oft
Вовсе нет:)
MathCAD хостит же.Правда,там .NET только для интерфейса,но не суть
По вопросам хостинга–к hardcase'у.Собственно,он мне про это и рассказывал

А ты спроси его, насколько целесообразно этим заниматься.

20K
10 августа 2010 года
InoY
75 / / 24.02.2008
Цитата: George
На что?


На то, что без дотНета не обойдёшься.:(

А вообще, можно просто перейти на CBuilder который может создавать приложения использующие дотНет. Кажется уже 2006й это может делать, но я ещё не успел его толком изучить, так что не берусь утверждать наверняка…
Хотя тот же QIP2010 написан на Делфи со всеми свистоперделками Win7, откуда можно сделать вывод, что и на билдере это возможно. Вопрос только на каком?

5
10 августа 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: InoY
Наткнулся вот на такую статейку:
www.rsdn.ru/article/winshell/taskbar7.xml

на мой взгляд там, довольно таки хорошо всё расписано, но как это реализовать в CBuilder 6, если это возможно конечно?


Микрософт поставляет компоненты для работы с оболочкой Windows 7 в виде привязок к MFC и .NET. На остальных им конечно же пофиг. Впрочем, всегда можно глянуть на Shell API, а также на функции, к которым привязывается .NET (Reflector покажет), но меня смущает что автор говорил о COM-интеропе в самом начале статьи, возможно все не так примитивно и просто.

Цитата:

По вопросам хостинга–к hardcase'у.Собственно,он мне про это и рассказывал


Хостинг .NET оправдан в системах такого уровня как SqlServer, VisualStudio или MathCAD, где присутствует большая часть неуправляемого кода.

20K
10 августа 2010 года
InoY
75 / / 24.02.2008
Вот цитата из той статьи:
Цитата:
Взаимодействие с ОС происходит на неуправляемом уровне через COM-объекты. Именно поэтому для .NET-приложений необходима реализация управляемых оберток.



Меня смущает, слово «COM-объекты» в этом тексте. Билдер же может с ними работать, если я не ошибаюсь? Может в этом направлении покопать? Только вот через какие такие «COM-объекты» всё это работает? Кстати приложение созданное в Билдере не является дотНет приложением и, как мне кажется, «реализация управляемых оберток» ему не нужна. Или нужна?:confused:

6
10 августа 2010 года
George
4.1K / / 05.01.2007
Цитата: InoY
А вообще, можно просто перейти на CBuilder который может создавать приложения использующие дотНет. Кажется уже 2006й это может делать, но я ещё не успел его толком изучить, так что не берусь утверждать наверняка…
Хотя тот же QIP2010 написан на Делфи со всеми свистоперделками Win7, откуда можно сделать вывод, что и на билдере это возможно. Вопрос только на каком?


Насколько я знаю CppB для .NET нету. Есть Delphi.NET, поддержку начали внедрять начиная с версии 2006, тот же QIP и был скорее всего написан на одной из последних версий оной. RAD Studio 2010 насколько знаю хорошо приспособлена под Вин 7, можно попробовать. Там даже есть спец студия Delphi Prism для этих целей. Но язык там - Delphi.

6
10 августа 2010 года
George
4.1K / / 05.01.2007
Цитата: InoY
Меня смущает, слово «COM-объекты» в этом тексте. Билдер же может с ними работать, если я не ошибаюсь?


Может.

Цитата: InoY
Кстати приложение созданное в Билдере не является дотНет приложением и, как мне кажется, «реализация управляемых оберток» ему не нужна. Или нужна?:confused:

Не нужна.

20K
10 августа 2010 года
InoY
75 / / 24.02.2008
Цитата: George
Не нужна.



Следовательно, чисто теоретически можно, и без дотНета обойтись, и без апдейта Билдера? Только выяснить, что за КОМ-объекты и можно приступать к их трепанации?

5
10 августа 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: InoY
Следовательно, чисто теоретически можно, и без дотНета обойтись, и без апдейта Билдера? Только выяснить, что за КОМ-объекты и можно приступать к их трепанации?


Ну только если вам больше делать нечего то можете и поковырять :)

20K
10 августа 2010 года
InoY
75 / / 24.02.2008
Заняться мне есть чем, но я из любопытства готов поковыряться. Только не знаю с чего начать?
14
10 августа 2010 года
Phodopus
3.3K / / 19.06.2008
См. ITaskbarList3. Доковыряешься, выложи плз простенький пример (там все должно быть не сложно).
20K
11 августа 2010 года
InoY
75 / / 24.02.2008
Цитата: Phodopus
См. ITaskbarList3. Доковыряешься, выложи плз простенький пример (там все должно быть не сложно).


Это и есть тот самый искомый КОМ-объект?
В любом случае я погуглю информацию получше.:) По мере продвижения буду инфу в этот тред сливать.

6
11 августа 2010 года
George
4.1K / / 05.01.2007
Цитата: InoY
Это и есть тот самый искомый КОМ-объект?


Это интерфейс к нему.

20K
11 августа 2010 года
InoY
75 / / 24.02.2008
Ну что ж, интерфейс это хорошо:)
Я тут кстати на эту тему один исходник для VC скачал и в нём нашёл такую строчку:
 
Код:
#include <shobjidl.h>   // For ITaskbarList3

Сдаётся мне, что если выдернуть этот заголовок из студии, например, 2010й, которая наверняка умеет работать с таскбаром Win7, и подключить его к проекту (разумеется закоментив всё явно не оносящееся к делу), то можно обойтись и без COM-объектов. Хотя и в CBuilder2010, тоже как я понял, подобный файлик есть.
Неужто всё так просто, или мне просто так кажется?:confused:
5
11 августа 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: InoY
Ну что ж, интерфейс это хорошо:)Я тут кстати на эту тему один исодник для VC скачал и в нём нашёл такую строчку:
 
Код:
#include <shobjidl.h>   // For ITaskbarList3



Какой смысл пользоваться устаревшими инструментами?

6
11 августа 2010 года
George
4.1K / / 05.01.2007
Цитата: InoY
Неужто всё так просто, или мне просто так кажется?:confused:

Ты вообще гонишь пургу уже, ничего личного, но факт :)

20K
11 августа 2010 года
InoY
75 / / 24.02.2008
Цитата: hardcase
Какой смысл пользоваться устаревшими инструментами?


Что ты имеешь ввиду под словом «инструмент»? Билдер или процитированную мной строчку исходника?

Цитата: George
Ты вообще гонишь пургу уже, ничего личного, но факт :)


Пурга так пурга, буду дальше гуглить, читать и думать…

6
11 августа 2010 года
George
4.1K / / 05.01.2007
Цитата: InoY
Пурга так пурга, буду дальше гуглить, читать и думать…

Тебе нужно понять, что такое .NET, Win32, COM-объекты и интерфейсы. А иначе тебя такими поисками в соседнюю галактику унесет, в иные, так сказать, миры. :D

20K
11 августа 2010 года
InoY
75 / / 24.02.2008
Когда я пытался понять, что такое .NET и задал здесь соответсвующий вопрос (может криво задал?) меня обозвали троллем:D. А вообще, как я понял, можно и без него обойтись, точнее применительно к Билдеру придётся обойтись без него.
14
11 августа 2010 года
Phodopus
3.3K / / 19.06.2008
Цитата: InoY
По мере продвижения буду инфу в этот тред сливать.


только давай по сути, не надо тут ерундой засорять

Цитата: InoY

Сдаётся мне, что если выдернуть этот заголовок из студии, например, 2010й, которая наверняка умеет работать с таскбаром Win7


Проще (в смысле без гаданий) из SDK для Win 7. Вытащи просто описание интерфейса (с родителями если надо) и GUID(ы) к нему, запихни в отдельный h-файл. Если заморочишься и напишешь библиотеку типов из которой можно будет сгенерить код в том числе и для дельфины, я поставлю плюсик :)

Цитата: InoY

то можно обойтись и без COM-объектов


хе-хе, все же совсем без них не обойдется

Цитата: InoY

Неужто всё так просто, или мне просто так кажется?:confused:


да ничего сложного

20K
11 августа 2010 года
InoY
75 / / 24.02.2008
[FONT=Tahoma]
Цитата: Phodopus
только давай по сути, не надо тут ерундой засорять

[/FONT]
[FONT=Tahoma]Ну тут уж извините! Универсальных критериев для определения «ерунды» нет! :D[/FONT]
[FONT=Tahoma] [/FONT]
[FONT=Tahoma]О первых результатах расскажу после выходных, ибо мне до моей виндосемь по прямой ~60 км (а по дорогам и того более).[/FONT]
[FONT=Tahoma][/FONT]
[FONT=Tahoma]P.S. Я кстати уже нарыл примеры по пользованию фичей таскбара на ASM'е. Но для меня это китайская грамота :(.[/FONT]

20K
23 августа 2010 года
InoY
75 / / 24.02.2008
После долгого и натужного изучения COM+, файлов справок Builder'а и исходников на Delphi, ASM'е и С++ для Visual Sudio методом копипасты и применения содержимого черепа написал вот такой код:
taskbarGUID.cpp:
 
Код:
// определение GUID для компонентов и интерфейсов проекта
#include <objbase.h>

extern "C" const IID IID_ITaskbarList3 =
{ 0x0EA1AFB91, 0x09E28, 0x04B86, { 0x090, 0x0E9, 0x09E, 0x09F, 0x08A, 0x05E, 0x0EF, 0x0AF } };

extern "C" const CLSID CLSID_TaskbarList 3=
{ 0x56FDF344, 0xFD6D, 0x11D0, { 0x095, 0x08A, 0x000, 0x060, 0x097, 0x0C9, 0x0A0, 0x090 } };

И собственно Unit1.cpp:
Код:
#include "taskbarGUID.cpp"

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
HRESULT hr;
LPVOID pTaskbar;
CoInitialize(NULL);
hr = CoCreateInstance(CLSID_TaskbarList3,
                      NULL,
                      CLSCTX_INPROC_SERVER,
                      IID_ITaskbarList3,
                      &pTaskbar);

if(hr==S_OK) ShowMessage("OK!");

//На следующей строчке выскакивает ошибка
pTaskbar->SetProgressValue(Handle,"TBPF_ERROR",50);

CoUninitialize();
}

И, при компиляции, получаю вот такую ошибку:
Цитата:
[C++ Error] Unit1.cpp(29): E2288 Pointer to structure required on left side of -> or ->*


Если я конечно правильно перевёл, то в справке написано, что с левой стороны от стрелки должен быть указатель (хотя как тут можно перевести неправильно?)

Цитата:
Nothing but a pointer is allowed on the left side of the arrow (->) in C or C++.
In C++ a -> operator is allowed.


Думаю, мой вопрос уже понятен: что здесь неправильно?
И, кстати, киньте кто-нибудь файлики shobjidl.h и ShlObj.h из Visual Studio 2010 или С++ (Delphi) Builder 2010?

246
23 августа 2010 года
GIZMO
1.8K / / 30.07.2004
Цитата: InoY

"TBPF_ERROR"...


кавычки убери

20K
23 августа 2010 года
InoY
75 / / 24.02.2008
Пробовал. Он тогда следующей (после указанной мной) ошибкой ругается на это, типа "что за неведомую фигню мне туда суёшь?!" *** Что именно пишет не помню позавчера делал, а сейчас проверить нет возможности.
____________
***Мне тут пришла мысль, что необходимо явно объявить состояние прогрессбара, но как это сделать?
14
23 августа 2010 года
Phodopus
3.3K / / 19.06.2008
"Неведомую фигню" надо выловить из SDK и описать константами (или define-ами, я ужо не помнить как сие в билдере делается). А разыменовывать LPVOID это ты мастер... :eek:
Кстате инклюдить цпп-файл тоже..
20K
24 августа 2010 года
InoY
75 / / 24.02.2008
Цитата: Phodopus
"Неведомую фигню" надо выловить из SDK



Вот поэтому я и прошу кинуть мне пару файликов из Studio'10 или Builder'10 в которых всё это уже описано соответствующими константами, дефайнами и прочей…

Цитата: Phodopus
А разыменовывать LPVOID это ты мастер…



Поясни что не так? Что это за тип такой LPVOID? И с чем его едят? А насчёт разыменования… Тут я просто копипастил…

Цитата: Phodopus
Кстате инклюдить цпп-файл тоже..


Ну какая разница какое расширение у файла? Хоть *.jopa_jopskaya
там будет! Это ж принципиальной роли не играет! А вообще, если серьёзно, тут я тоже копипастил.

14
24 августа 2010 года
Phodopus
3.3K / / 19.06.2008
Файлы из Win7 SDK.
LPVOID это нетипизированный указатель (void *). Вообще с такими знаниями тебе рановато что-то делать, впору что-то читать :).
6
24 августа 2010 года
George
4.1K / / 05.01.2007
Не, ну делать можно, но только самому, а не по каждому поводу спрашивать форум. И читать, обязательно. Мож тогда чему-нибудь научится.
20K
24 августа 2010 года
InoY
75 / / 24.02.2008
Цитата: George
не по каждому поводу спрашивать



Раньше у меня и такой-то возможности не было и ведь чему-то я научился!
<оффтоп>
Правда это самообразование даёт свои плоды: я так и не понял в каких случаях мне нужно писать some_var=0; , а в каких *some_var=0;
</оффтоп>

6
24 августа 2010 года
George
4.1K / / 05.01.2007
Цитата: InoY

Правда это самообразование даёт свои плоды: я так и не понял в каких случаях мне нужно писать some_var=0; , а в каких *some_var=0;

Вот потому иди и читай. Форум - не справка, уясни это!

1
24 августа 2010 года
kot_
7.3K / / 20.01.2000
Жорж какого хера ты его клюешь? Человек разбирается и вполне адекватная задача. Если ты уверен что это проблема уровня справки - ну так выложи решение, вместе посмотрим.
Хватит флеймить в теме.
246
25 августа 2010 года
GIZMO
1.8K / / 30.07.2004
Цитата: InoY
И, кстати, киньте кто-нибудь файлики shobjidl.h и ShlObj.h из Visual Studio 2010 или С++ (Delphi) Builder 2010?


Выдрано из shobjidl.h, на ВСВ2009 (где нет ITaskbarList3) компилится без вопросов...

20K
25 августа 2010 года
InoY
75 / / 24.02.2008
Просмотрев эти файлы я думаю, что осталось только дело техники: присоединить к проекту, дописать немного кода для применения функций и откомпилить!
[LEFT][COLOR=Silver]Или я слишком самоуверен?[/COLOR]
[/LEFT]
14
25 августа 2010 года
Phodopus
3.3K / / 19.06.2008
Цитата: InoY

[COLOR=Silver]Или я слишком самоуверен?[/COLOR]


Я бы все же вырезал лишь необходимое, поместил бы куда-то отдельно, создал бы отдельный класс для применения прогресса на кнопке...
И если делать грамотно, нужно написать обработку сообщения TaskbarButtonCreated и разрешить его для evaluated привилегий, как советует мелкософт.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог