Dymek niczym z GG

0

Jak zrobić dymek z ikonką i tekstem taki jaki jest w GG.(wyskakuje kiedy ktoś zmienia sobie statut lub dostępność).
A mianowicie chodzi mi o to żeby jak gram w grę pokazał się w prawym dolnym rogu na wierzchu okna gry i obsługiwał kliknięcie.

Jest może już taki komponent,jak tak to bardzo proszę o linka.

0

W gg to chyba forma z obcietym regionem. Ja tam proponuje ballon hints, powinno byc w FAQ

0

rotfl - a co to jest dymek? a co to jest forma? to są po prostu zwykłe okna - nie kumam odpowiedzi Wolverine :|

A co do pytania - bylo już kiedyś jak zrobić taki dymek zawsze na wierzchu - tak jak w gg - poszukaj.

0

Szukałem już pewnie usuneli. ;-(
Nawet przeszukałem wszystkie odnośniki,info o wyszukiwarce.

Może ktoś to ma może na dysku ten opis tego balonika zawsze na wierzchu.

Pomóżcie proszę bo nawet formularz stayontop nie przeskoczy na wierzch w grach używających DirectX i OpenGL.

0

Szukałem już pewnie usuneli. ;-(

albo wpisales zla fraze, ja musze nieraz 5 razy zmieniac fraze by cos znalezc, no ale nie wnikam, bo ta wyszukiwarka tez do boskich nie nalezy :)

Pomóżcie proszę bo nawet formularz stayontop nie przeskoczy na wierzch w grach używających DirectX i OpenGL.

w OpenGL nie wyskoczy (przynajmniej u mnie), i w odpowiednio "zabezpieczonych" grach.

zeby to zrobic robisz po prostu nowa forme, ustasz jej pozycje, dajesz onstaytop i dodatkowo gdzies w tle caly czas aktywujesz to okienko kiedy ma byc widoczne (chocby timerem), to powinno pomoc.

0

Właśnie mówię że formularz nie działa jak trzeba.
Zapewne też miałem komponent tworzący balonik na wierzchu ,ale gdzieś mi się zapodział.

Co dziwne zwykłe Windowsowy dymki (podpowiedzi) wynużają się za gry OpenGL ,ale te tylko w małym okienku Quake itp. bo na pełnym ekranie nie próbowałem.

Jak ktoś chce to może spróbować i mówie że windowsowe dymki mają pierwszeństwo nawet fakt ,że robiłem coś w Delphi i nagle hint Zamknij się mi zawiesił i jak włączyłęm Starcrafta BW (DirectX) to był taki jak GG na wierzchu i taki niby 2 kolorowy (czarno-biały)

0

Może zrób tak wstaw na formularz komponent DXDraw i w nim dynamicznie narysuj co chcesz ,gdyż w procesach DDHelp ma najwyższy priorytet (większy nawet od głównego jądra system) i to właśnie on kontroluje aplikacje i gry używające Directa.Jeśli zamkniesz ten proces już żadna gra pod Directa Ci się nie uruchomi.

Więc do roboty. [cya]

//PS. Chyba jest jeszcze jakiś eksport związany z pierszęństwem aplikacji w Direct'cie.

0

Może to i dobra sprawa z tym formularzem wyjeżdzającym ,ale nie rozwiązuje całego problemu.
Po co mi formularz ,który nie wychodzi na wierzch w grach używających OpenGL i Direct'a.

Tu chodzi o coś więcej niż o sam balonik.
Tu chodzi o wyświetlenie baloniku takiego jak w GG z możliwością przejścia na wierzch wszystkich procesów lub wyświetlenie się na głównym procesie gry.

Może jakić canvas na uchwycie gry czy coś.
Lub ShowWindow(Handle,SW_SHOW); gdzie handle uchwyt aktualnego procesu w tym przypadku gry.

0

najwyzszy priorytet i ciagla aktywacja tego okna zalatwia sprawe, przynajmniej u mnie. sprobuj tez tego pomyslu z DX ktory Ci zaproponowano wczesniej.

a zamaist wysywac komunikat SW_SHOW nie mozesz po prostu zrobic gorm.show? na to samo wyjdzie. (a moze showmodal?)

poza tym w grach uzywajacych DX i OpenGL tego nie bedzie widac. Powodem moze byc to ze obraz w tych oknach (DX i OpenGL) jest odswiezana kilka razy na sekunde i po prostu zamazuje to co bylo narysowane przed tym, w tym obraz formy (czyt. balonika).

0

rotfl - a co to jest dymek? a co to jest forma? to są po prostu zwykłe okna - nie kumam odpowiedzi Wolverine

Wiem, ze to okna, lecz w gg jest to najprawdopodobniej robione recznie (obcinanie regionu, rysowanie tekstu etc) a do ballon hints sa gotowe procedury.

0

Wszystko niby robione ręcznie ,ale jak wytłumaczycie to iż grając w grę naglę pokazuje się dymek GG z informacją że dany użytkownik jest dostępny i można w grze na to kliknąć co spowoduje zminimalizowanie gry i wyświetlenie głównego menu GG.

A formularz z DirectX też nie wchodzi na wierzch nawet jak użyje StayOnTop.W pełnym ekranie to zgodzę się ,ale na formularzu wżyciu.
Formularz nie da się przesunąć na wierzch w grach ,które używają Direct'a i OpenGL ,a co dopiero Formularz+DirectX na to samo wychodzi.

0

Ludzie ludzie wiem o co tu biega.
W głównym pliku Gadu-Gadu nie ma dialogu z tym balonikiem więc zaczołęm się bawić z plikiem ggwhook.dll i co eXeScope wyszukał mi importu:
USER32.dll
Ordinal Name
0286 UnhookWindowsHookEx //pewnie zwolnienie hooka z dymku
0262 SetWindowsHookExA //założenie/ustawienie globalnego hooka na dymek
0015 CallNextHookEx //przejście do następnego Hooka
00FC GetCursorPos //wiadomo (pewnie tutaj sprawdza czy położenie kursora zgadza się z dymkiem ,bo niekiedy w grach kiedy dymek się letko przesłoni nadal można kliknąć)
018F IsWindow //sprawdzanie czy jest już takie okno
01DE PostMessageA //wysłanie komunikatu systemowego

I jeszcze importy KERNEL32.dll ale mniej ważne.
Więc tu nie chodzi o formularz tylko o dynamicznie tworzony dialog dla którego ustawiany jest później Hook ,a co do kliknięcia to za wszystko odpowiada sprawdzenie czy w danym miejscu jest dymek i przechwycenie kliknięcia w grze.
Ale teraz jak to zrobić?

0

Co prawda są odpowiedniki co do WindowHook w Delphi.
Np. w pliku FORMS.PAS jest dużo o WindowHook.

Jedno jest pewne co świadczy Classes.pas WindowHook nie jest tylko procedurą ,ale też komunikatem.

//Musiałem wżucić swoje 2 grosze [cya]

0

Witam wszystkich na forum.

Co tu dużo mówić.
Tak naprawdę tutaj chodzi komunikat ,pan "Anonim" miał rację gdyż formularz nic nie ma do tego świadczy o tym sam plik ggwhook.dll .

Zadajmy sobie pytanie widział ktoś może w grze ,która używa technologi graficznej OpenGL formularz zasłaniający ją. ( :-/ Nie)
A komunikat błedu w grze lub innego zawansowanego programu np. SoftICE czy innych debugerów. ( :-| Tak)

Więdz odpowiedź teraz jest prosta zbudujmy komunikat taki jak dialog systemowy i załóżmy na niego hooka.

Pozdrawiam Grupa Noribo Częstochowa

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