Ta strona wykorzystuje technologię cookies, zapoznaj się z naszą Polityką prywatności.
Oficjalny Polski Portal Komunikatora Miranda
Strona główna   O Mirandzie   FAQ   Download   English   TeamPL   Profil   Zaloguj   Rejestracja  
Wyszukaj interesujące Cię dyskusje Wyszukaj interesujące Cię dyskusje Szybkie szukanie:     
 REGULAMIN    O nas...   * Zaloguj się, by sprawdzić wiadomości   * Użytkownicy   * Grupy   * phpBB forum FAQ

Jak tworzyć wtyczki?
Idź do strony Poprzedni  1, 2, 3  Następny
 
Napisz nowy temat   Odpowiedz do tematu    Forum www.miranda-im.pl Strona Główna -> Wtyczki i protokoły
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
onekamel
Stukacz
Stukacz

Status stażu



Dołączył: 31 Sty 2007
Posty: 16

PostWysłany: 04 Lut 2007 15:02    Temat postu: Odpowiedz z cytatem

Uzywam HookEvent'a do zlapania zdarzenia, wyglada to tak:

Cytat:

static int Echo(WPARAM, LPARAM);

extern "C" int Load(PLUGINLINK *link)
{
pluginLink=link;
SEvent=HookEvent(ME_DB_EVENT_ADDED, &Echo);
return 0;
}


wewnatrz funkcji Echo sprawdzam:

Cytat:
DBEVENTINFO dbei;
ZeroMemory(&dbei, sizeof(dbei));
if (dbei.eventType == EVENTTYPE_MESSAGE) {}


Ale jak dobrac sie do samej tresci otrzymanej wiadomosci i wyswietlic ja w np. w MessageBox?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Adv Bot




Dołączył: 01 Sty 1970
Posty:

PostWysłany: 28 Mar 2024 17:57    Temat postu: Reklama Odpowiedz z cytatem


W TechnoVolt znajdziesz energooszczędne oświetlenie hal i pomieszczeń magazynowo-produkcyjnych w profesjonalnym wykonaniu.
Wieloletnie doświadczenie i atrakcyjne ceny gwarantują u nas najlepszą ofertę na rynku w branży elektrycznej.
Stosujemy najnowocześniejsze technologie i wysokiej jakości produkty.
Dla inwestycji naszych klientów dostarczamy i wykonujemy nowoczesne oświetlenie energooszczędne (LED) z zastosowaniem opraw: dekoracyjnych, rastrowych, hermetycznych, przemysłowych, projektorów oraz linii świetlnych.
Kontakt z nami i informacje na naszej stronie www.TechnoVolt.pl


*** NOWOŚĆ ***
Kompensacja mocy biernej - obniż swoje rachunki za prąd!
Usługa dostępna na terenie całego kraju

Zredukuj opłaty za prąd :: Płać mniej za prąd

Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
slotwin Płeć: mężczyzna
Developer
Developer



Dołączył: 14 Maj 2005
Posty: 284
Skąd: Toruń
Wiek: 42 lat(a)

PostWysłany: 05 Lut 2007 15:56    Temat postu: Odpowiedz z cytatem

Echo powinna wyglądac mniejwięcej tak:
Cytat:
static int Echo(WPARAM wParam, LPARAM lParam) {
DBEVENTINFO dbei;
HANDLE hContact = (HANDLE)wParam;
HANDLE hDbEvent = (HANDLE)lParam;
ZeroMemory(&dbei, sizeof(dbei));
dbei.cbSize = sizeof(dbei);
dbei.cbBlob = CallService(MS_DB_EVENT_GETBLOBSIZE, (WPARAM)hDbEvent, 0);
dbei.pBlob = /*wskaznik do bufora o rozmiarze jaki jest podany w cbBlob w bajtach*/;
CallService(MS_DB_EVENT_GET, (WPARAM)hDbEvent, (LAPRAM)&dbei);
if (dbei.eventType == EVENTTYPE_MESSAGE) {}
return 0;
}

Nawet nie sprawdzałem czy to działa. Nigdy nie bawiłem sie w przechwytywanie wiadomości. pBlob będzie wskazywać na "surowe" dane tworzące wiadomość, jak to przekształcić na coś czytelnego - nie mam pojęcia. W sumie straciłem na szukanie tego sporo czasu chociaż nie jest mi to do niczego potrzebne. Jeżeli chcesz obrabiać wiadomości zapoznaj sie dokładnie z include/m_database.h w źródłąch Mirandy.

PS. Ja wiem, że to onekamel założył ten temat, ale wyszła z tego ładna rozmowa na temat jak ogólnie tworzyć wtyczki. Może pytania odnośnie jego konkretnego pomysłu wydzielić do osobnego wątku?
_________________
jestem odpadem atomowym
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
DJ Lotos Płeć: mężczyzna
Root Admin
Root Admin



Dołączył: 19 Sty 2003
Posty: 3342
Skąd: PL/state: lubuskie
Wiek: 46 lat(a)

PostWysłany: 05 Lut 2007 16:35    Temat postu: Odpowiedz z cytatem

niech sie jeszcze troche nazbiera postow Wink
_________________
Podobno wszechświat i głupota ludzka są nieograniczone...
Co do tego drugiego nie ma wątpliwości... Wink A. Einstein

Dlatego zawsze korzystaj z FAQ, Szukaj i Instalatora
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
onekamel
Stukacz
Stukacz

Status stażu



Dołączył: 31 Sty 2007
Posty: 16

PostWysłany: 17 Lut 2007 10:47    Temat postu: Odpowiedz z cytatem

slotwin: dzięki za pomoc, znalazlłm źródło http://www.koders.com/cpp/fid354AEE51B40FBFF789278FBEE1C3FB13196044CF.aspx z wszystkimi potrzebnymi funkcjami. Gotowa funkcja odczytująca wiadomość powinna wyglądać mniej więcej tak:
Cytat:
static int Echo(WPARAM wParam, LPARAM lParam) {
DBEVENTINFO dbei;
HANDLE hContact = (HANDLE)wParam;
HANDLE hDbEvent = (HANDLE)lParam;
ZeroMemory(&dbei, sizeof(dbei));
dbei.cbSize = sizeof(dbei);
dbei.cbBlob = CallService(MS_DB_EVENT_GETBLOBSIZE, (WPARAM)hDbEvent, 0);
dbei.pBlob = (PBYTE) malloc(dbei.cbBlob);
CallService(MS_DB_EVENT_GET, (WPARAM)hDbEvent, (LPARAM)&dbei);
if (dbei.eventType == EVENTTYPE_MESSAGE) {
MessageBox(NULL, dbei.pBlob, "Test Plug-in", MB_OK+MB_ICONINFORMATION);
}
return 0;
}

Teraz pora zbadać to konkretniej.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
onekamel
Stukacz
Stukacz

Status stażu



Dołączył: 31 Sty 2007
Posty: 16

PostWysłany: 05 Mar 2007 13:16    Temat postu: Odpowiedz z cytatem

Witam
Pojawil sie nowy problem. Przerzucilem sie na VS2005, zainstalowalem tez szablon do tworzenia wtyczek pod mirande. Problem tyczy sie komunikacji wtyczki z innymi aplikacjami. Mecz sie z tym juz kilka dni wiec prosze o pomoc.
Wczesniej ta sama wtyczke zrobilem w BCB i tworzenie socketow jest tam banalne. W jaki sposob zmusic wtyczke w VS do tworzenia polaczen, serwer juz mam. Klient powinien byc we wtyczce. Nie wiem jak dodac BackgroundWorker'a (jesli jest on konieczny), nie wiem jakie biblioteki zalaczyc itd. ogolnie sporo nie wiem.
Probowalem tez laczyc sie aplikacja w BCB z serwerem w VS C#, w BCB korzystalem z TcpClient->Socket->SendText(), ale aplikacja w VS wiadomosci nie dostaje, z VS do BCB wiadomosci dochodza.
Pomocy, bo sobie wszystkie wlosy z glowy powyrywam...
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
slotwin Płeć: mężczyzna
Developer
Developer



Dołączył: 14 Maj 2005
Posty: 284
Skąd: Toruń
Wiek: 42 lat(a)

PostWysłany: 05 Mar 2007 19:35    Temat postu: Odpowiedz z cytatem

Wtyczka NotifyAnything pozwalała na pokazywanie PopUp'ów w Mirandzie przez zewnętrzne aplikacje. Działa zdaje się na socket'ach. Pobierz źródła i przyjżyj się jak działa. Ja więcej nie pomoge, nigdy nie bawiłem się socket'ami. Nie wymagaj też od innych, że odwalą za ciebie robote, tymbardziej, że nadal nie wiemy co wtyczka miałaby robić. Jak DJ Lotos zauważył narazie wygląda to na spambot'a a w takim wypadku ja jestem na nie.
_________________
jestem odpadem atomowym
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
onekamel
Stukacz
Stukacz

Status stażu



Dołączył: 31 Sty 2007
Posty: 16

PostWysłany: 05 Mar 2007 22:39    Temat postu: Odpowiedz z cytatem

Hej,
nie nie, nie jest to zaden spam bot a bot udostepniajacy zawnetrzny interfejs do zarzadzania oprogramowaniem zarzadzajacym przedsiebiorstwem (np. Platnik). Mechanizm komunikacji w jezyku naturalnym, menu oraz linia komend, jak w cmd. Jestem daleki od robienia czegos spamujacego. Projekt 5-osobowy, moje zadanie to udostepnienie mechanizmu konfiguracji mirandy z zewnetrznej aplikacji (np. zmiana statusu okreslonego konta użytkownika mirandy, interfejs komunikacji itp). Jak bede mial juz naprawde cos sensownego to sie podziele.
Pozdrawiam
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
lopik Płeć: mężczyzna
Developer
Developer



Dołączył: 10 Kwi 2006
Posty: 400
Skąd: Małopolska

PostWysłany: 19 Kwi 2007 13:22    Temat postu: Odpowiedz z cytatem

Mam taki pewien problem, i chciałem się poradzić...

Chciał bym dostać informację o tym, że ktoś z listy kontaktów do nas napisał wiadomość, i po otrzymaniu takiej informacji chcę wykonać swoją funkcję.
Chcę tylko dostać z tej informacji nazwę kontaktu który do nas pisał, i wiadomość jaką dostaliśmy (ale to nie jest bardzo wymagane).
No i problem mam właśnie z dostaniem tej informacji, nie wiem za dobrze jak taka funkcja ma wyglądać Rolling Eyes

Zrobiłem coś takiego:

Cytat:
int ProtoAck(WPARAM wParam, LPARAM lParam)
{
ACKDATA *ack = (ACKDATA*)lParam;

if (ack->type == ACKTYPE_MESSAGE)
{
MessageBox(0, "ktos napisal wiadomosc", "Info", MB_OK);
}

return 0;
}


I to działa ale... dostaje informacje o tym jak Ja piszę do kogoś, a jak ktoś pisze do mnie to już nie działa.

Przeglądałem źródła wtyczek, ale nie mogę do tego dojść, więc jeśli ktoś by wiedział coś w tym temacie, i mógł napisać był bym bardzo wdzięczny.

Z Góry Wielkie Dzięki.
Pozdrawiam.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
onekamel
Stukacz
Stukacz

Status stażu



Dołączył: 31 Sty 2007
Posty: 16

PostWysłany: 20 Maj 2007 20:03    Temat postu: Odpowiedz z cytatem

Ja to robie tak:
Cytat:
{
DBEVENTINFO dbei;
HANDLE hContact = (HANDLE)wParam;
HANDLE hDbEvent = (HANDLE)lParam;

ZeroMemory(&dbei, sizeof(dbei));
dbei.cbSize = sizeof(dbei);
dbei.cbBlob = CallService(MS_DB_EVENT_GETBLOBSIZE, (WPARAM)hDbEvent, 0);
dbei.pBlob = (PBYTE) malloc(dbei.cbBlob);
CallService(MS_DB_EVENT_GET, (WPARAM)hDbEvent, (LPARAM)&dbei);
if (dbei.eventType == EVENTTYPE_MESSAGE) {

long handle=wParam;
const char *konto_kom = (const char *)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hContact, 0);
AnsiString trescWiadomosci=StrPas(dbei.pBlob);

//protokol=dbei.szModule;
}
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
onekamel
Stukacz
Stukacz

Status stażu



Dołączył: 31 Sty 2007
Posty: 16

PostWysłany: 20 Maj 2007 20:18    Temat postu: Wysylanie plików Odpowiedz z cytatem

Witam
Chciałem oprogramować własnym pluginem wysyłanie plików. Napotkałem na problem związany z brakiem zdarzeń odpowiedzialnych za wysyłanie plików.
W skrócie robie to tak:
Cytat:
CallService(MS_FILE_SENDSPECIFICFILES, (WPARAM)handle.ToInt(), (LPARAM)ppFile);

Następnie znajduje uchwyt do okna, wypełniam pola i klikam Send (automatycznie).
Jak sprawdzić stan wysyłania pliku?
Probowałem :
Cytat:
FindWindowEx(FSendWindow, NULL, "Static", "Status:");
aby sprawdzic stan pola Status ale takiego pola nie można znaleźć mimo że je widać. Może jest to związane z tym że po kliknięciu Send wygląd okna nieco się zmienia (znika np. pole "To:", pojawia sie "Status:" ale za pomocą FindWindowEx moge znaleźć to pierwsze mimo że juz go nie widać a nie to drugie).
Próbowałem też:
Cytat:
GetMessageA(msg, FSendWindow, NULL, NULL);
ale jedyne komunikaty jakie są przesyłane związane są jedynie z tym co się dzieje z oknem a nie jego zawartością.
Jakieś inne sugestie? Może są jednak generowane jakieś zdarzenia?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
mgs_saladin Płeć: mężczyzna
Gaduła
Gaduła

Status stażu



Dołączył: 22 Sty 2007
Posty: 38
Skąd: Radom
Wiek: 40 lat(a)

PostWysłany: 05 Sty 2008 21:15    Temat postu: Odpowiedz z cytatem

ma ktos kod zrodlowy ze wszystkimi niezbednymi dodatkami? niech ktos udostepni jak to powinno orginalnie wygladac...
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
karaguy Płeć: mężczyzna
Moderator
Moderator



Dołączył: 19 Sty 2003
Posty: 2096
Skąd: Gliwice
Wiek: 38 lat(a)

PostWysłany: 06 Sty 2008 18:31    Temat postu: Odpowiedz z cytatem

SVN w sekcji development na oficjalnej stronie Mirandy.
_________________
antykara, Twój przyjazny moderator... no, prawie przyjazny.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
zYx Płeć: mężczyzna
Gaduła
Gaduła

Status stażu



Dołączył: 04 Gru 2004
Posty: 51

Wiek: 42 lat(a)

Punktów karnych: 60

PostWysłany: 17 Sie 2008 21:23    Temat postu: Odpowiedz z cytatem

Witam,

ja mam pytanko jak najprościej mogę edytować wtyczkę zmieniając tylko jakiś text, którego w edytorze resource nie moge zrobić.
Zaznaczam, że kompletnie nie znam się na językach c++ i innych... chcę tylko dokonac minimalnej modyfikacji nie naruszając mechanizmu wtyczki, czyli tak jak napisałem, jakiś mały tekst na inny, lub po prostu go usunąć.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
andy Płeć: mężczyzna
Weteran
Weteran



Dołączył: 01 Mar 2007
Posty: 940
Skąd: Z nienacka

PostWysłany: 17 Sie 2008 22:23    Temat postu: Odpowiedz z cytatem

Będziesz musiał sobie przekompilować źródła wtyczki.

/Bywalec CDRinfo ? Wink
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
zYx Płeć: mężczyzna
Gaduła
Gaduła

Status stażu



Dołączył: 04 Gru 2004
Posty: 51

Wiek: 42 lat(a)

Punktów karnych: 60

PostWysłany: 17 Sie 2008 22:30    Temat postu: Odpowiedz z cytatem

andy napisał:
Będziesz musiał sobie przekompilować źródła wtyczki.

/Bywalec CDRinfo ? Wink


Tak bywalec Very Happy

Czy jest szansa, że będe potrafił to zrobić sam? Jeśli tak to przy użyciu jakiego programu?
Dzięki
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum www.miranda-im.pl Strona Główna -> Wtyczki i protokoły Wszystkie czasy w strefie EET (Europa)
Idź do strony Poprzedni  1, 2, 3  Następny
Strona 2 z 3

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach




Newsy z PortaluCo nowego na forumOpis funkcji



:: Kontakt z obsługą  :: Stats  :: Reklama
 
Powered by phpBB © 2001, 2002 phpBB Group, Portal and phpBB extensions © 2003-2007 DJ Lotos, smartBlue Style © 2002 Smartor