Autor Wątek: Podstawowy kod wtyczki  (Przeczytany 13413 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?
« Ostatnia zmiana: Październik 27, 2009, 09:09:18 am wysłana przez Raistlin »

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
---------------------------
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).
« Ostatnia zmiana: Październik 27, 2009, 10:47:32 am wysłana przez Raistlin »

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
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
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
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
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
(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
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
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
  • *
Odp: 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

  • Master Developer
  • Starszyzna
  • *
    • WTW PLUGINS
Odp: Podstawowy kod wtyczki
« Odpowiedź #50 dnia: Październik 14, 2011, 09:33:19 am »