ToolBar

0
<font color="black">

Witam serdecznie !!!

Mam taki problem, piszę aplikację do zgrywania muzyki z np. VIVY (TV).
Z kompresją lame, własne tagi ...
Muzykę nagrywam TotalRecorderem 4.0. Komunikuję się z nią za pomocą funkcji postessage, senmessage etc. (winapi)
Niestety na moje nieszczęście polecenia takie jak New, Save są na ToolBarze to taki standardowy komponent,
który przechowuje dużo butonów w sobie np. w InternetExplorer na nim są wstecz, dalej, stop, etc.
Uchwyt jego otrzymuje w sposób taki, że najpierw biorę uchwyt aplikacji:
FindWindow, a potem klasy ToolBarWindow32 przez:
FindWindowEx
i gdy mam już uchwyt to takie polecenie jak:
sendmessage(h:hwnd,TB_PRESSBUTTON,0,1), czy postmessage(h,TB_PRESSBUTTON,0,1),
już mi nie działa ale np.:
i:=sendmessage(h,TB_BUTTONCOUNT,0,0),
wszystko jest ok.
A cha z parametrami lparam i wparam kombinowałem już wszystko.

Na moje nieszczęście próbowałem to zastosować do toolbara we własnej aplikacji,
owszem przyjął komunikat button i przeszedł do stanu press,
ale potem nie chciał wrócić do stanu pierwotnego.

Proszę o pomoc, bo utknąłem. Maciej [email protected]

Czy ktoś wie czy może już wyszedł nowy albo przerobiony pakiet RXa na D6.

Ewenyualnie, jak można to rozwiązać przez komunikację z MENU: &FILE >> NEW
GetMenu, GetSubMenu, IsMenu i co dalej?

</span>
0

Pobierz sobie z tego toolbara jaki idCommand posiada przycisk, który Ciebie interesuje. Następnie wyślij do głownego okna apliakcji komunikat WM_COMMAND z tym pramatrem idCommand przycisku. To wywoła wykonanie akcji takiej samej jak przy menu albo toolbarze. A z tym pressed chodziło o to, czy przycisk jest wciśnięty, czy normalny. Mi czytanie Windows SDK zajeło 5 minut i znalazłem rozwiązanie. Wszystkie sprawy dotyczące Windowsa powinieneś mieć w SDK.

Parę podpowiedzi, czego masz szukać:
TB_GETBUTTON
TBBUTTON

0

STARY :-[ :-[
Jak ty to rocbisz!!!!????
Odpisz koniecznie:
[email protected]

[cygaro]

0

Witam Ponownie !!!

Ciszę się, że stara się mi Pan pomoc ;)

Odnośnie pana pomysłu w gruncie rzeczy jest dobry, ale nie działa;)

Na pisałem to tak:

happ:=findwindow('TotalRecorderWndClass',nil);
if not IsWindow(hApp) then Exit;
h := FindWindowEx(hApp, 0, 'ToolbarWindow32',nil);
if not IsWindow(h) then exit;
SENDMESSAGE(h,TB_GETBUTTON,nr_buttona,longint(@ttbbutton));

buton := TControl(Ttbbutton.dwData);
if Buton is TToolButton then TToolButton(Buton).Click;

or

sendmessage(t1.Handle,WM_COMMAND,1,tt.idCommand);

Niestety przy pobieraniu TB_GETBUTTON występuje błąd:
(program wykonał nieprawidłową operację)
Natomiast przy innych ttoolbarach po prostu zwraca mi id, iString, ... = 0

Próbowałem również z postmessage(happ,wm_command,1,id), ale niestety nic.

Wierzę w Pana geniusz i proszę o pomoc.

Pozdrawiam Maciej [email protected]

ps. SDK API czytam do poduszki ;)

0

Witam!

Nie zrozumielśmy się do końca [glowa] . Chodziło mi o kod takiego typu (jeżeli nie będzie działał, to kończą mi się pomysły):
Uses CommCtrl;
{............}
Var But:TTBButton;
Begin
hApp:=FindWindow('TotalRecorderWndClass',Nil);
If Not IsWindow(hApp) Then Exit;
H := FindWindowEx(hApp, 0, 'ToolbarWindow32',Nil);
If Not IsWindow(H) Then Exit;
SendMessage(H,TB_GETBUTTON,nr_buttona,@But);
SendMessage(hApp,WM_COMMAND,But.idCommand,0);
End;

1 użytkowników online, w tym zalogowanych: 0, gości: 1