Autor Wątek: [wtwScroll] migacz  (Przeczytany 29186 razy)

0 Użytkowników i 1 Gość przegląda ten wątek.

Offline n3oo

[wtwScroll] migacz
« dnia: Lipca 26, 2009, 10:49:56 am »
Witam, na wstępie proszę o "łagodne" traktowanie, ponieważ jestem bardzo początkujący :P
Wczoraj, korzystając z zamieszczonego szkieletu wtyczki przez adrian_007 :) napisałem sobie migacza scroll lockiem, jednak brakuje mu kilku elementów aby był taki jakbym tego chciał :P
1. wpiąłem się w WTW_EVENT_CHATWND_BEFORE_MSG_DISP, i sprawdzam czy wiadomość ma WTW_MESSAGE_FLAG_INCOMING, aby wywołać mruganie no ale niestety wiadomości doczytywane z poprzedniej rozmowy również mają taką flagę i przy otwarciu okna zaczyna mi mrugać lampka :P po otrzymaniu wiadomości bez tej flagi (domyślam się, że wszystkie przychodzące mają INCOMING a reszta OUTGOING)  - zatrzymuje mruganie. Czy jest jakiś sposób (flaga) na sprawdzenie czy wiadomość jest doczytywana z archiwum ?
2. jako, że wpinam się w kolejkę istniejącego okna, to gdy te okno nie istnieje (pokazuje nam się powiadomienie w tray'u o nowej/ch wiadomościach) nie wywołuje mi się ten EVENT (albo nie wiem który powinien to być) , przez co mruga tylko jeśli po uruchomieniu komunikatora otworzymy okno - wtedy zakładki się dodają same automatycznie i eventy chodzą normalnie.
3. sprawdzanie w poszukiwaniu wiadomości bez flagi WTW_MESSAGE_FLAG_INCOMING jest trochę upośledzone, ponieważ, aby przestało mi to mrugać muszę odpisać :D istnieje jakiś prosty sposób na sprawdzenie czy okno zostało pokazane na pierwszy plan lub odczytałem zaległe wiadomości ? Na podobnej zasadzie jak gaszone jest podświetlenie w zakładkach. Moja znajomość winapi niestety jest równa zero, a to wszystko jest metodą prób i błędów :D Myślałem, aby sprawdzać kiedy ostatnio naciśnięto klawisz, ale wtyczka sama symuluje naciśnięcie klawisza wiec to raczej odpada.
W dodatku problem będzie z wygaszaczem ekranu - będzie zapewne go wybudzać, ale jak na razie to na własne potrzeby, a ja wyłączam monitor :D

Kod jest dostępny http://pastebin.com/m156e4976

Wersja najnowsza (0.3.1)
Kliknij, aby pobrać x86/x64/source (zip)
- poprawiony błąd błędnej konfiguracji aplikacji (?)
- miganie diodą CapsLocka (nie mam w swoim laptopie diody scroll lock'a, a numlock nie reaguje na wywołania) - dodatkowo nie symulujemy naciśnięcia klawisza, a samo miganie
- gdy program wykryje, że poruszyliśmy myszą lub naciśniemy klawisz na klawiaturze automagicznie dioda przestaje migać.
- w paczce jest kompletny kod źródłowy

Nie ma obcenie zbyt dużo czasu na naukę C++ więc ewentualne modyfikacje mogą powstawać bardzo wolno. Jeśli ktoś jest zainteresowany - może przejąć projekt - pod warunkiem, że będzie go rozwijać :)
« Ostatnia zmiana: Września 10, 2009, 17:38:42 pm wysłana przez n3oo »
Env: Win7 x64 / WinXP x86 | GG: 670035 | WWW: Portfolio

Offline Kaworu

  • Ryszard
  • Szlachta
  • *
  • Twój Koszmar Senny
    • k2t.eu
Re: migacz
« Odpowiedź #1 dnia: Lipca 26, 2009, 11:18:27 am »
1 i 2 -> podłącz się poziom wcześniej, WTW_ON_PROTOCOL_EVENT (wParam wtwProtocolEvent*) i tam sobie łap

#define WTW_PEV_MESSAGE_RECV   0x0005   // lparam wtwMessageGef*
#define WTW_PEV_MESSAGE_SEND   0x0006   // lparam wtwMessageGef*

Offline n3oo

Re: migacz
« Odpowiedź #2 dnia: Lipca 26, 2009, 11:32:27 am »
no faktycznie, teraz działa przy powiadomieniu z tray'a i nie mruga dla wiadomości z archiwum. A jest jakiś event przy przeczytaniu wszystkich oczekujących/wywołaniu okna ? :P

Dodatkowo WTW_PEV_MESSAGE_RECV nie idzie też jak zmienia się status kogoś na liście ? bo zaczyna mi mrugać też :D

http://pastebin.org/4322
Env: Win7 x64 / WinXP x86 | GG: 670035 | WWW: Portfolio

Offline Kaworu

  • Ryszard
  • Szlachta
  • *
  • Twój Koszmar Senny
    • k2t.eu
Re: migacz
« Odpowiedź #3 dnia: Lipca 26, 2009, 11:40:40 am »
Dodatkowo WTW_PEV_MESSAGE_RECV nie idzie też jak zmienia się status kogoś na liście ? bo zaczyna mi mrugać też :D
Idzie, ale to za sprawą kInfo, ktory sobie tego używa do wyświrtlania stanów w oknie rozmowy. ;P

Sprawdz sobie, czy flagi WTW_MESSAGE_FLAG_WARNING, _INFO, _ERROR są ustawione, jeśli są to nie jest normalna wiadomosć z rozmowy;

Offline zimaq

Re: migacz
« Odpowiedź #4 dnia: Lipca 26, 2009, 14:39:29 pm »
ja poproszę to skompilowane, jakby można było ;>

Offline n3oo

Re: migacz
« Odpowiedź #5 dnia: Lipca 26, 2009, 23:19:19 pm »
udostępnię skompilowane jak dojdę do ładu z VS 2005 :P bo aktualnie kompiluje to pod betą VS2010 i wątpie, że będzie to działać wam bez problemów :P
@kaw: zdarzenia WTW_EVENT_ON_CHATWND_OPEN i _CLOSE jak na moją myśl powinny chodzić przy otwieraniu / zamykaniu zakładek - mylę się ? bo *_CREATE jest wywoływany przy tworzeniu zakładki. Jak na razie nie zauważyłem, aby w ogóle gdzieś były wywoływane :D adrian zgłosił to samo chyba na bugtrackerze.
Może zdarzenie dodatkowo zdarzenie SHOW ? gdy okno mruga nam w pasku i je wywołujemy / mruga zakładka i ją aktywujemy ? :D próbowałem się podpiąć jakoś pod okno i odebrać to ale próby spełzły na niczym :/
Env: Win7 x64 / WinXP x86 | GG: 670035 | WWW: Portfolio

Offline zimaq

Re: migacz
« Odpowiedź #6 dnia: Lipca 27, 2009, 10:51:54 am »
a ja chętnie nawet pomarudzę sobie pod nosem, że pewnie będę musiał 2 biblioteki dorzucić, żeby działało, ale potestuję, a raczej poużywam, bo wybudzanie ekranu przez scroll locka w sumie mnie najbardziej interesuje :P

Offline adrian_007

  • Moderator
  • Starszyzna
  • *
    • WTW PLUGINS
Re: migacz
« Odpowiedź #7 dnia: Lipca 27, 2009, 11:10:38 am »
open i close zamienione na show i hide... jak pojdzie dobrze, to wieczorem moze byc wtyczka :P

Offline n3oo

Re: migacz
« Odpowiedź #8 dnia: Lipca 27, 2009, 14:39:47 pm »
nawet nie zauważyłem, że już nowa nightly :P
a to ja załączam skompilowaną wersję pod VS 2005 x86 i x64
Env: Win7 x64 / WinXP x86 | GG: 670035 | WWW: Portfolio

Offline GoRo

  • Narybek
  • *
Re: [wtwScroll] migacz
« Odpowiedź #9 dnia: Lipca 27, 2009, 15:33:44 pm »
No niestety nie działa tak jak ma działać.
Gdy dostaje wiadomość to miga, ale gdy już mam otwarte okno rozmowy to przy kolejnych wiadomościach dale4j miga i nie przestaje, a gdy zminimalizuję je, to nie chce wrócić. No i ciągle miga.
OS: Windows 7 Ultimate 32bit +wszystkie aktualizacje ; IE8; Przegladarka domyślna: Google Chrome 3.0.195.3

Offline n3oo

Re: [wtwScroll] migacz
« Odpowiedź #10 dnia: Lipca 27, 2009, 15:38:34 pm »
"No niestety nie działa tak jak ma działać."
A jak ma to działać ? Bo ja pisałem pod siebie i nie wiem jaki jest Twój "standard" działania. :P

aktualnie jest zrobione, tak, że miga przy otwartym oknie i przy zamkniętym - dopiero dziś Kaw dodał funkcje do API pozwalające wykrywać czy okno jest chowane czy pokazywane. Będzie w następnej wersji. ;)
« Ostatnia zmiana: Lipca 27, 2009, 15:40:27 pm wysłana przez n3oo »
Env: Win7 x64 / WinXP x86 | GG: 670035 | WWW: Portfolio

Offline Kaworu

  • Ryszard
  • Szlachta
  • *
  • Twój Koszmar Senny
    • k2t.eu
Re: [wtwScroll] migacz
« Odpowiedź #11 dnia: Lipca 27, 2009, 16:00:24 pm »
Ja bym na Twoim miejscu jak przychodzi wiadomość sprawdził czy okno chata jest aktywne, jak nie to zaczal migać i przetwał migotanie kiedy dostane event _ACTIVATED ;P

Offline zimaq

Re: [wtwScroll] migacz
« Odpowiedź #12 dnia: Lipca 27, 2009, 16:10:36 pm »
w sumie to powinno migać tylko jeżeli dostaniemy nową wiadomość a okno/zakładka nie ma focusa czy tam jest zamknięte, czyli tak jak z grubsza napisał to kaworu wyżej ;P

Offline n3oo

Re: [wtwScroll] migacz
« Odpowiedź #13 dnia: Lipca 27, 2009, 17:50:21 pm »
hmm, zrobiłem tak jak Kaw proponował :P
powiadomienie WM_ACTIVATE  - zdaje się nie lecieć, gdy okno nie jest zminimalizowane - http://msdn.microsoft.com/en-us/library/ms646274(VS.85).aspx w "Remarks" - "If the window is being activated and is not minimized, the DefWindowProc function sets the keyboard focus to the window." w każdym bądź razie, gdy nie zminimalizujemy okna a dostaniemy wiadomość, scroll pomimo kliknięcia w okno - nadal będzie mrugać :/ trzeba przełączyć okienka, lub wysłać wiadomość aby zatrzymać ;)

Druga sprawa, gdy nie mamy włączonego powiadamiania balonikiem (okno otwiera się automatycznie na pasku zadań), przy pierwszej wiadomości okno nie mruga (bo gdzieś po drodze dostaje automatycznie wiadomość WM_ACTIVATE i wyłącza to mruganie.

W archiwum są też źródła, jak by ktoś chciał zobaczyć :P
Env: Win7 x64 / WinXP x86 | GG: 670035 | WWW: Portfolio

Offline morrow

  • Narybek
  • *
Re: [wtwScroll] migacz
« Odpowiedź #14 dnia: Lipca 27, 2009, 20:54:36 pm »
niestety na win 7 x64 po włączeniu wtyczki pojawia sie problem z tym nowym paskiem windowsa :)
nie pokazują sie miniatury okien ( alt + tab też świruje ) :(:(

Offline n3oo

Re: [wtwScroll] migacz
« Odpowiedź #15 dnia: Lipca 27, 2009, 20:56:51 pm »
jak mruga to świruje (włącza się i wyłącza SCROLL LOCK) :P skończy to nie będzie świrować ;)
Env: Win7 x64 / WinXP x86 | GG: 670035 | WWW: Portfolio

Offline Pragmatic69

Re: [wtwScroll] migacz
« Odpowiedź #16 dnia: Lipca 27, 2009, 21:03:26 pm »
A więc testy czas zacząć. ;) Choć na większą skalę, to dopiero jutro. ;p Wtyka zapowiada się smakowicie. ;D
Wersja WTW: Zawsze najnowsza nightly.

Windows7 Home Premium PL SP1 x64 + IE9 & Opera 12.00 :]

Offline zhvir

Re: [wtwScroll] migacz
« Odpowiedź #17 dnia: Lipca 27, 2009, 21:05:11 pm »
ja proponuję bardziej ekstremalne rozwiązanie, miganie na przemian ScrollLockiem, NumLockiem i dodatkowo CapsLockiem ;))
Chciałbym być zawsze niewinny i prawdziwy, chciałbym być zawsze pełen wiary i nadziei...

Offline sober

Re: [wtwScroll] migacz
« Odpowiedź #18 dnia: Lipca 27, 2009, 22:18:50 pm »
A ja proponuję podłączyć stroboskop. ;P



Ignoruję posty napisane byle jak!

Offline alberht

  • WTW evangelist
  • Global Moderator
  • Młodzież
  • *
    • http://forum.k2t.eu/
Re: [wtwScroll] migacz
« Odpowiedź #19 dnia: Lipca 27, 2009, 22:27:48 pm »
ale nie każdy ma w domu sterownik DMX...;) no chyba że stroboskop ma się włączać kiedy wtyczka poda zasilanie na USB, chociaż 5V może być trochę mało jak na lampę wyładowczą;)
Regards,
alberht
WTW evangelist