Autor Wątek: Podstawowy kod wtyczki  (Przeczytany 5311 razy)

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

Offline bomblix

  • Narybek
  • *
Re: Podstawowy kod wtyczki
« Odpowiedź #40 dnia: Czerwiec 26, 2009, 19:17:50 pm »
Też by mi się przydał aktualny podstawowy kod wtyczki ...
tak to jest jasne...

Offline Raistlin

  • Narybek
  • *
Re: Podstawowy kod wtyczki
« Odpowiedź #41 dnia: Październik 27, 2009, 09:05:37 am »
#include <windows.h>
#include "api/plInterface.h"

extern "C" __declspec(dllexport) WTW_PTR __stdcall pluginAbout(WTW_PARAM, WTW_PARAM, void*);
extern "C" __declspec(dllexport) WTWPLUGINFO* __stdcall queryPlugInfo(DWORD, DWORD);
extern "C" __declspec(dllexport) int __stdcall pluginLoad(DWORD, WTWFUNCTIONS*);
extern "C" __declspec(dllexport) int __stdcall pluginUnload(DWORD);
extern "C" __declspec(dllexport) WTW_PTR __stdcall evHookTest(WTW_PARAM, WTW_PARAM, void*);
void* evTest();

WTWFUNCTIONS *pF = NULL;

WTWPLUGINFO pluginInfo = {
sizeof(WTWPLUGINFO),
L"Testowa nazwa",
L"Jakiś opis",
L"Prawa bezprawne",
L"Ja, czyli autor",
L"mail dla spamu",
L"adres blogaska lub link do n-k",
L"",
PLUGIN_API_VERSION,
MAKE_QWORD_VERSION(0, 1, 0, 0),
WTW_CLASS_UNKNOWN,
pluginAbout,
NULL,
0,
0,
0,
0
};

WTW_PTR pluginAbout(WTW_PARAM a, WTW_PARAM b, void *c) {
wtwAboutDlg aboutDialog = {
sizeof(wtwAboutDlg),
L"Tytuł",
L"Nagłówek1",
L"Nagłówek2",
L"Nagłówek3",
L"Tekst",
NULL,
NULL
};
pF->fnCall(WTW_ABOUT_SHOW, (WTW_PARAM)&aboutDialog, NULL);

return 0;
}

WTWPLUGINFO* queryPlugInfo(DWORD apiVersion, DWORD masterVersion) {
return &pluginInfo;
}

void* evTest() {
MessageBox(NULL, L"TEST", L"Caption", WTW_MESSAGE_FLAG_WARNING);
return 0;
}

WTW_PTR evHookTest(WTW_PARAM a, WTW_PARAM b, void* c) {
MessageBox(NULL, L"TEST", L"Pokazano okienko!", WTW_MESSAGE_FLAG_WARNING);
return 0;
}

int pluginLoad(DWORD callReason, WTWFUNCTIONS *fC) {
pF = fC;

//WTW_EVENT_ON_CHATWND_CREATE
__LOG(pF, L"Test", L"Plugin załadowano!");

pF->evHook(WTW_EVENT_ON_CHATWND_CREATE, evHookTest, evTest);

return 0;
}

int pluginUnload(DWORD callReason) {
return 0;
}

Pozostaje tylko opracować ładny sposób ładowania tego z poziomu VS, tak żeby można było podpiąć debugger. Kaw?

Offline Kaworu

  • Ryszard
  • Szlachta
  • *
  • Twój Koszmar Senny
    • k2t.eu
Re: Podstawowy kod wtyczki
« Odpowiedź #42 dnia: Październik 27, 2009, 09:21:35 am »
WTW_PTR evHookTest(WTW_PARAM a, WTW_PARAM b, void* c) {
MessageBox(NULL, L"TEST", L"Pokazano okienko!", WTW_MESSAGE_FLAG_WARNING);
return 0;
}

?

MessageBox(NULL, L"TEST", L"Pokazano okienko!", MB_ICONEXCLAMATION | MB_OK);

? ;P

A co do podpinania do debugera, wystarczy odpalic przecie debuger vs podajac plik wtw.exe jako startup.

Offline Raistlin

  • Narybek
  • *
Re: Podstawowy kod wtyczki
« Odpowiedź #43 dnia: Październik 27, 2009, 09:37:12 am »
WTW_PTR evHookTest(WTW_PARAM a, WTW_PARAM b, void* c) {
MessageBox(NULL, L"TEST", L"Pokazano okienko!", WTW_MESSAGE_FLAG_WARNING);
return 0;
}

?

MessageBox(NULL, L"TEST", L"Pokazano okienko!", MB_ICONEXCLAMATION | MB_OK);

? ;P

Mea culpa :)

A co do podpinania do debugera, wystarczy odpalic przecie debuger vs podajac plik wtw.exe jako startup.

No tak niby, tylko:
a) chciałbym odpalić drugie wtw z innym profilem "do zabawy" (są gdzieś przełączniki wtw opisane?), nie swoim domyślnym
b) .pdb mógłbyś udostępnić :)
c) w sensie "Local Windows Debugger", command: WTW? Bo jako startup dać kod WTW, to spoko nie ma problemu, ale z execa?

Offline Kaworu

  • Ryszard
  • Szlachta
  • *
  • Twój Koszmar Senny
    • k2t.eu
Re: Podstawowy kod wtyczki
« Odpowiedź #44 dnia: Październik 27, 2009, 09:45:36 am »
a) chciałbym odpalić drugie wtw z innym profilem "do zabawy" (są gdzieś przełączniki wtw opisane?), nie swoim domyślnym

No bo nikt by się opisu nie spodziewał w helpie... http://wiki.k2t.eu/wiki/WTW_-_Linia_komend

b) .pdb mógłbyś udostępnić :)
Prędzej symbol serwer... bostrasznie mis ie chce ze storage wyciagac konkretne symbole... ;P

c) w sensie "Local Windows Debugger", command: WTW? Bo jako startup dać kod WTW, to spoko nie ma problemu, ale z execa?
Poprostu odpalić wtw w debugerze, zaladuje sobie wtyczkie mozesz sobie ją debgować, byle ona była odpowiednio skompilowana.

Offline Raistlin

  • Narybek
  • *
Re: Podstawowy kod wtyczki
« Odpowiedź #45 dnia: Październik 27, 2009, 10:04:56 am »
No bo nikt by się opisu nie spodziewał w helpie... http://wiki.k2t.eu/wiki/WTW_-_Linia_komend
No niby, ale:
c:\Program Files\K2T\WTW>wtw.exe --profile
i
c:\Program Files\K2T\WTW>wtw.exe --profile "debug"
nie działa i odpala uparcie mój domyślny profil, bez okienka wyboru (zarówno w najnowszej "stabilnej", jak i w nightly).

Co więcej --clone działa (jeśli działa) co najmniej mało logicznie. Czemu? Odpalenie drugiej instancji wtw z clone skutkuje messagem:
Cytuj (zaznaczone)
---------------------------
Błąd ładowania
---------------------------
Profil,który chcesz załadować jest obecnie w użyciu i nie może zostać uruchomiony. Jeśli jesteś pewien, że ani jedna instancja komunikatora nie jest aktywna usuń z katalogu profilu plik '.lock'.
---------------------------
OK   
---------------------------
To albo w opisie by się przydało, że musi być inny profil (i takowe żeby działczyło), albo ignorować .lock. Swoją drogą - ręczne usuwanie .lock przez laików może być jak naprawa laptopa na odległość :)

--debug działa OK, nawet dla odpalonej instancji. --fullDump nie próbowałem.

[edit]
Po ręcznym stworzeniu profilu i wywoływaniu z --clone nawet działa, choć najpierw wyświetla mi komunikat z powyżej o .lock, a potem cokolwiek bym nie wpisał - wybór profilu (zamiast załadowania konkretnego). Swoją drogą - przydałby się profil "domyślny", ładowany automagicznie.

Debugowanie:
Dalej nie kumam, jak chcesz "odpalić wtw w debugerze" bez źródła. Jeśli nie tak, jak radzi MSDN (bo skąd WTW ma wiedzieć, że ten dll jest pluginem skoro nie ma go w Plugins?), ani nie poprzez attach to process (ten sam problem), to może output directory dać Plugins (tylko wtedy... jak debugować? to raz, a dwa >= Vista się będzie pluć, że piszę po Program Files).

Offline Kaworu

  • Ryszard
  • Szlachta
  • *
  • Twój Koszmar Senny
    • k2t.eu
Re: Podstawowy kod wtyczki
« Odpowiedź #46 dnia: Październik 27, 2009, 11:29:25 am »
Cytuj (zaznaczone)
c:\Program Files\K2T\WTW>wtw.exe --profile "debug" --clone
Jak chcesz drugą instancję, z reszta zhvir do dzis twierdzi, ze jemu działa...

Cytuj (zaznaczone)
To albo w opisie by się przydało, że musi być inny profil
Chyba logiczne? Program ma tam pootwierane pliki"exclusive" i jak mu sie inny do nich dobierze to się zaczną cuda dziać, z utratą danych włącznie. Jeden profil - jeden raz załadowany.

Cytuj (zaznaczone)
albo ignorować .lock.
Broń boże, .lock jest właśnie po to aby uniknąć problemów kiedy usiłujesz załadować już załadowany profil. Jest ładnie kasowany kiedy profil jest wyładowany a jakby nie został to pid w nim zapisany tez ma znaczenie ;P

Cytuj (zaznaczone)
Dalej nie kumam, jak chcesz "odpalić wtw w debugerze" bez źródła.
Normalnie, VS wyświetli komunikat, że wtw.exe nie ma symboli i czy chcesz kontynuować. Chcesz. Debugowanie wtyczki idze wtedy całkiem dobrze, robiłem tak z tlenem ;P

Cytuj (zaznaczone)
(bo skąd WTW ma wiedzieć, że ten dll jest pluginem skoro nie ma go w Plugins?)
No rzecz jasna,musi miec odpowiednie rozszerzenie i w plugins być. VS sobie doskonale poradzi ze zidentyfikowaniem cotojest,ksad sie wzieło i ze to nasze ;P

Cytuj (zaznaczone)
a dwa >= Vista się będzie pluć, że piszę po Program Files).
To nadaj uprawienia administratora. Albo sobie zrob osobna kopie wtw do celów debugowawczych.

Offline Raistlin

  • Narybek
  • *
Re: Podstawowy kod wtyczki
« Odpowiedź #47 dnia: Październik 27, 2009, 11:33:26 am »
Cytuj (zaznaczone)
c:\Program Files\K2T\WTW>wtw.exe --profile "debug" --clone
Jak chcesz drugą instancję, z reszta zhvir do dzis twierdzi, ze jemu działa...
Bo działa - jak masz już profil debug. Samo --profile (okno wyboru profilu wg dokumentacji) nie wywołuje okienka wyboru/tworzenia profilu.

Offline Kaworu

  • Ryszard
  • Szlachta
  • *
  • Twój Koszmar Senny
    • k2t.eu
Re: Podstawowy kod wtyczki
« Odpowiedź #48 dnia: Październik 27, 2009, 11:36:17 am »
Bo działa - jak masz już profil debug. Samo --profile (okno wyboru profilu wg dokumentacji) nie wywołuje okienka wyboru/tworzenia profilu.
No, "załaduj profil" musi mieć profil do załadowania.

I fakt, w tym miejscu dokumentacja kłamie, "--selectProfile" wymusza okno.

Offline switalski.piotr

  • Stylista
  • Starszyzna
  • *
Podstawowy kod wtyczki
« Odpowiedź #49 dnia: Październik 13, 2011, 21:05:16 pm »
No cóż... zainstalowałem VS 2008 E, poszukałem na wiki podstawowej wtyczki, tu na forum znalazłem wtwPlugTemplate i co? odinstalowałem całe to badziewie :) Czas na jakiś prosty tutek: jak od samiutkiego początku do pluki *.plug skompilować to co dziadu, czy adrian stworzyli. Począwszy od włączenia VS, czy odpalenia któregokolwiek pliku. Jestem kaskaderem i lubię wyzwania, ale tu zbyt wiele wydaje się obce. Niech powstanie plik wtyczki, który pokaże mi to okno "Hello world"... tylko tyle :)

Offline adrian_007

  • Plugin Developer
  • Starszyzna
  • *
    • ftyczki
Podstawowy kod wtyczki
« Odpowiedź #50 dnia: Październik 14, 2011, 09:33:19 am »
moje wtyczki | nie udzielam supportu poza forum...