Top Info
najistotniejsze informacje z tematu |
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
onekamel Stukacz
Dołączył: 31 Sty 2007 Posty: 16
|
Wysłany: 04 Lut 2007 15:02 Temat postu: |
|
|
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 |
|
|
Adv Bot
Dołączył: 01 Sty 1970 Posty:
|
Wysłany: 03 Maj 2024 0:42 Temat postu: Reklama |
|
|
Oferta TechnoVolt to systemy monitoringu video - telewizji przemysłowej (CCTV) profesjonalnie i w dobrych cenach.
Wieloletnie doświadczenie i atrakcyjne ceny gwarantują u nas najlepszą ofertę na rynku w branży teletechnicznej.
Stosujemy najnowocześniejsze technologie i wysokiej jakości produkty.
Dla inwestycji naszych klientów dostarczamy i wykonujemy systemy monitoringu video z zastosowaniem: rejestratorów DVR/NVR/IP (hybrydowych) obsługujących wiele standardów (PAL, AHD, TVI, CVI, FullHD, 1080p, 720p, IP) oraz kamer CCTV wysokiej rozdzielczości (kuliste, z oświetlaczem IR, kopułowe, z wysięgnikiem, antywandal, hermetyczne, zoom/PTZ) znanych producentów (BCS, Dahua, Bosh, Gemini, APTI, Hybro, AV-Tech).
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 |
|
|
slotwin Developer
Dołączył: 14 Maj 2005 Posty: 284 Skąd: Toruń Wiek: 42 lat(a)
|
Wysłany: 05 Lut 2007 15:56 Temat postu: |
|
|
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 |
|
|
DJ Lotos Root Admin
Dołączył: 19 Sty 2003 Posty: 3342 Skąd: PL/state: lubuskie Wiek: 46 lat(a)
|
Wysłany: 05 Lut 2007 16:35 Temat postu: |
|
|
niech sie jeszcze troche nazbiera postow _________________ Podobno wszechświat i głupota ludzka są nieograniczone...
Co do tego drugiego nie ma wątpliwości... A. Einstein
Dlatego zawsze korzystaj z FAQ, Szukaj i Instalatora |
|
Powrót do góry |
|
|
onekamel Stukacz
Dołączył: 31 Sty 2007 Posty: 16
|
Wysłany: 17 Lut 2007 10:47 Temat postu: |
|
|
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 |
|
|
onekamel Stukacz
Dołączył: 31 Sty 2007 Posty: 16
|
Wysłany: 05 Mar 2007 13:16 Temat postu: |
|
|
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 |
|
|
slotwin Developer
Dołączył: 14 Maj 2005 Posty: 284 Skąd: Toruń Wiek: 42 lat(a)
|
Wysłany: 05 Mar 2007 19:35 Temat postu: |
|
|
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 |
|
|
onekamel Stukacz
Dołączył: 31 Sty 2007 Posty: 16
|
Wysłany: 05 Mar 2007 22:39 Temat postu: |
|
|
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 |
|
|
lopik Developer
Dołączył: 10 Kwi 2006 Posty: 400 Skąd: Małopolska
|
Wysłany: 19 Kwi 2007 13:22 Temat postu: |
|
|
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ć
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 |
|
|
onekamel Stukacz
Dołączył: 31 Sty 2007 Posty: 16
|
Wysłany: 20 Maj 2007 20:03 Temat postu: |
|
|
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 |
|
|
onekamel Stukacz
Dołączył: 31 Sty 2007 Posty: 16
|
Wysłany: 20 Maj 2007 20:18 Temat postu: Wysylanie plików |
|
|
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 |
|
|
mgs_saladin Gaduła
Dołączył: 22 Sty 2007 Posty: 38 Skąd: Radom Wiek: 40 lat(a)
|
Wysłany: 05 Sty 2008 21:15 Temat postu: |
|
|
ma ktos kod zrodlowy ze wszystkimi niezbednymi dodatkami? niech ktos udostepni jak to powinno orginalnie wygladac... |
|
Powrót do góry |
|
|
karaguy Moderator
Dołączył: 19 Sty 2003 Posty: 2096 Skąd: Gliwice Wiek: 38 lat(a)
|
Wysłany: 06 Sty 2008 18:31 Temat postu: |
|
|
SVN w sekcji development na oficjalnej stronie Mirandy. _________________ antykara, Twój przyjazny moderator... no, prawie przyjazny. |
|
Powrót do góry |
|
|
zYx Gaduła
Dołączył: 04 Gru 2004 Posty: 51
Wiek: 42 lat(a)
Punktów karnych: 60
|
Wysłany: 17 Sie 2008 21:23 Temat postu: |
|
|
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 |
|
|
andy Weteran
Dołączył: 01 Mar 2007 Posty: 940 Skąd: Z nienacka
|
Wysłany: 17 Sie 2008 22:23 Temat postu: |
|
|
Będziesz musiał sobie przekompilować źródła wtyczki.
/Bywalec CDRinfo ? |
|
Powrót do góry |
|
|
zYx Gaduła
Dołączył: 04 Gru 2004 Posty: 51
Wiek: 42 lat(a)
Punktów karnych: 60
|
Wysłany: 17 Sie 2008 22:30 Temat postu: |
|
|
andy napisał: |
Będziesz musiał sobie przekompilować źródła wtyczki.
/Bywalec CDRinfo ? |
Tak bywalec
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 |
|
|
|