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

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

Offline Kaworu

  • Ryszard
  • Szlachta
  • *
  • Twój Koszmar Senny
    • k2t.eu
Re: Podstawowy kod wtyczki
« Odpowiedź #20 dnia: Styczeń 27, 2009, 16:05:26 pm »
Usuń odwołanie do libUI, powinno działać ;P

wlodixon

  • Gość
Re: Podstawowy kod wtyczki
« Odpowiedź #21 dnia: Styczeń 27, 2009, 22:27:40 pm »
Cytat: "n3oo"
@kaw: a dało by rade udostępić ten base_plug w formie w której się od razu kompiluje (bez kwiatków) ? :P próbuje pod VS 2008 i już poprawiłem nawet błędne odwołania do nagłówków, skopiowałem API do folderu do którego są odwołania w projekcie :P ale nadal brakuje  "/libUI/interface.h" z pliku WndOptionsS.h :)

Jakimś psim swędem kasowałem, kroiłem itp. i w końcu skompilował mi to VC 2008.

W poniższym linku wszystko co pokroiłem razem z API by nic nie zabrakło.

http://http://rapidshare.com/files/190397820/_base_plug.rar

A poniżej screen mojego nędznego działania.


Offline Dziaddu

  • Młodzież
  • **
Re: Podstawowy kod wtyczki
« Odpowiedź #22 dnia: Styczeń 28, 2009, 08:51:16 am »
Przykład od Kaworu ma sporo zbędnego kodu, więc raczej nie jest dobrym pomysłem zaczynanie od niego. Na początek wystarczy:
#include "..\_wtw2\.api\plInterface.h"

WTWFUNCTIONS *pF = NULL;
WTWPLUGINFO plugInfo = {
sizeof(WTWPLUGINFO),
L"Hello world!",
L"Najprostszy możliwy plugin",
L"? 2009",
L"Autor",
L"mail@autora",
L"www.",
L"", //link do pliku xml na potrzeby autoupdate'u
PLUGIN_API_VERSION,
MAKE_QWORD_VERSION(0, 1, 0, 0),
WTW_CLASS_UNKNOWN,
NULL,
0,
0,
0,
0
}

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

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

    /* tu będzie wszystko, co wtyczka będzie robiła podczas ładowania,
     * np. dodawanie "sztucznych" kontaktów, zakładanie hooków itp.
     * pF = fC jest po to, żeby w każdym innym miejcu kodu można było
     * wywoływać funkcje wtw przez pF->Call()
     */

    // żeby udowodnić, że to się wywołało (tylko na potrzeby przykładu):
    MessageBox(NULL, L"Wtyczka załadowana", L"Hello world!", MB_OK);

    return 0;
}

int __stdcall pluginUnload(DWORD callReason)
{
    /* tu wtyczka po sobie posprząta
     * zdejmie hooki, zniszczy okienka, usunie dodane kontakty...
     */

    // żeby udowodnić, że to się wywołało (tylko na potrzeby przykładu):
    MessageBox(NULL, L"Wtyczka wyładowana", L"Hello world!", MB_OK);

    return 0;
}
Moim zdaniem najlepiej zacząć od czegoś takiego i właśnie na taki szkielet liczyłem, zaczynając temat ;)

Offline Kaworu

  • Ryszard
  • Szlachta
  • *
  • Twój Koszmar Senny
    • k2t.eu
Re: Podstawowy kod wtyczki
« Odpowiedź #23 dnia: Styczeń 28, 2009, 13:46:04 pm »
Cytat: "Dziaddu"
Przykład od Kaworu ma sporo zbędnego kodu, więc raczej nie jest dobrym pomysłem zaczynanie od niego.
Wiesz, tego co wysłałem to j używam jako bazy do pluginów, mam w im od razu opcji i ustawiony plik konfiguracyjny ;P

Offline Dziaddu

  • Młodzież
  • **
Re: Podstawowy kod wtyczki
« Odpowiedź #24 dnia: Styczeń 28, 2009, 16:42:05 pm »
Ale dla kogoś, kto chce zrozumieć jak to działa, ma zbyt dużo zaciemniaczy ;)

Offline Kaworu

  • Ryszard
  • Szlachta
  • *
  • Twój Koszmar Senny
    • k2t.eu
Re: Podstawowy kod wtyczki
« Odpowiedź #25 dnia: Styczeń 28, 2009, 17:00:26 pm »
To dodałem Twoj kod do Wiki ;p

wlodixon

  • Gość
Re: Podstawowy kod wtyczki
« Odpowiedź #26 dnia: Styczeń 28, 2009, 17:54:30 pm »
Do jakiego Wiki - ja chyba o czymś nie wiem.

Offline Kaworu

  • Ryszard
  • Szlachta
  • *
  • Twój Koszmar Senny
    • k2t.eu
Re: Podstawowy kod wtyczki
« Odpowiedź #27 dnia: Styczeń 28, 2009, 18:20:06 pm »
Dużo osob nie wie ;P

wlodixon

  • Gość
Re: Podstawowy kod wtyczki
« Odpowiedź #28 dnia: Styczeń 28, 2009, 18:23:13 pm »
A jakiś link można prosić?

Offline Kaworu

  • Ryszard
  • Szlachta
  • *
  • Twój Koszmar Senny
    • k2t.eu
Re: Podstawowy kod wtyczki
« Odpowiedź #29 dnia: Styczeń 28, 2009, 18:28:29 pm »
Ale tam w sumie na razie niczego ciekawego nie ma.

wlodixon

  • Gość
Re: Podstawowy kod wtyczki
« Odpowiedź #30 dnia: Styczeń 28, 2009, 20:50:45 pm »
Rozumiem...

Offline Simek

  • Młodzież
  • **
  • Press Pause Play
    • http://simekdesign.eu
Re: Podstawowy kod wtyczki
« Odpowiedź #31 dnia: Styczeń 28, 2009, 22:14:25 pm »
Wiki: [...]

Oj trudno było się domyśleć ; P

// kaw usunął link, bo wcale nie ma ochoty aby na razie google go złapały ;p

Offline Dziaddu

  • Młodzież
  • **
Re: Podstawowy kod wtyczki
« Odpowiedź #32 dnia: Luty 15, 2009, 21:43:05 pm »
Dlaczego wtw musi mieć wersję x64? :P Tylko mi życie komplikuje. Zainstalowałem Windows SDK, które ma kompilator z VS pozwalający na tworzenie binarek 64-bit na 32-bitowych systemach. Fajnie, tylko nawet wersji 32-bit nie chciało mi poprawnie skompilować/zlinkować, żeby wtw widziało je jako poprawną wtyczkę, więc po kilku godzinach kombinowania, zmieniania ustawień, próbowania zmuszenia cl.exe do zaakceptowania pliku .def (uprzejmie informowało mnie, że ów plik został zignorowany), ostatecznie odinstalowałem WinSDK. Głównie dlatego, że Zhvir, widocznie zdesperowany ;) na tyle, że sam zaczął szukać rozwiązania dla mnie, podrzucił mi istotną informację: MinGW-w64 wcale nie działa wyłącznie na x64, jak błędnie myślałem (albo jestem zbyt głupi, albo faktycznie "normalne" programy mające wersje z przyrostkami "64" i "32" działają pod konkretnymi systemami - a tu taki psikus. Jeszcze raz dzięki dla Zhvira). Przechodząc do sedna: skonfigurowałem sobie Code::Blocks, żeby korzystało z MinGW-w64, ale dostaję taki błąd przy próbie kompilacji:
C:\Program Files\K2T\WTW\API\wtwPluginSettings.h|186|error: cast from 'void*' to 'int' loses precision|
Chodzi o linię:
ret = (int)sDef.paramValue;
Rozumiem skąd problem: void* jest wskaźnikiem 64bit, a int ma tylko 32 bity, ale czy na x64 nie powinien być on 64-bitowy? Trzeba jeszcze coś zdefiniować, żeby taki był? Niby bez tego nagłówka wszystko się kompiluje i linkuje (nie wiem jeszcze czy działa), ale boję się, że coś się będzie sypało. Poza tym w przyszłości ten nagłówek może być potrzebny ;)

Offline Kaworu

  • Ryszard
  • Szlachta
  • *
  • Twój Koszmar Senny
    • k2t.eu
Re: Podstawowy kod wtyczki
« Odpowiedź #33 dnia: Luty 15, 2009, 22:04:13 pm »
Cytat: "Dziaddu"
Dlaczego wtw musi mieć wersję x64? :P Tylko mi życie komplikuje.
Bo ma być nowoczesny, keidys sie żąstanawiałem and zostawieniem tylkow wersji x64. ;P

Cytat: "Dziaddu"
C:\Program Files\K2T\WTW\API\wtwPluginSettings.h|186|error: cast from 'void*' to 'int' loses precision|
Chodzi o linię:
ret = (int)sDef.paramValue;
Zrób (int)(QWORD) albo obniż marudzenie kompilatora na takie rzeczy, to powinien być najwyżej warning; Poza tym C-Style-Cast powinno dać mu wyraźnie do zrozumienia, ze o to chodzi i nie ma marudzić.

Cytat: "Dziaddu"
Rozumiem skąd problem: void* jest wskaźnikiem 64bit, a int ma tylko 32 bity, ale czy na x64 nie powinien być on 64-bitowy? Trzeba jeszcze coś zdefiniować, żeby taki był?
Wszystko jest ok, to kompilator za bardzo narzeka.

Cytat: "Dziaddu"
Niby bez tego nagłówka wszystko się kompiluje i linkuje (nie wiem jeszcze czy działa), ale boję się, że coś się będzie sypało. Poza tym w przyszłości ten nagłówek może być potrzebny ;)
Problemy masz tylko przy adresach funkcji czy zmiennych, jak je rzucisz na int32 to obetnie kawałek adresu i nieomal pewny masz crash. W tym wypadku void* jest tylko "uniwersalnym typem", ktory akurat tutaj przechowuje wartości od 0x0 do 0xFFFFFFFF, wiec obcięcie go niczemu nie zaszkodzi.

Offline Dziaddu

  • Młodzież
  • **
Re: Podstawowy kod wtyczki
« Odpowiedź #34 dnia: Luty 15, 2009, 22:18:32 pm »
Cytat: "Kaworu"
keidys sie żąstanawiałem and zostawieniem tylkow wersji x64. ;P
Ani się waż! ;)

Dzięki za informacje. Po skompilowaniu i próbie włączenia Zhvir dostaje informację, że nie znaleziono jakiegoś modułu, chociaż z niczego niestandardowego nie korzystałem. Czyli jeszcze jeden problem (z którym powalczę we wtorek najwcześniej), ale przynajmniej już to widzi jako binarkę x64 :D

Offline dk3mpa

  • Narybek
  • *
Re: Podstawowy kod wtyczki
« Odpowiedź #35 dnia: Marzec 08, 2009, 09:11:18 am »
Cytat: "Dziaddu"
Przykład od Kaworu ma sporo zbędnego kodu, więc raczej nie jest dobrym pomysłem zaczynanie od niego. Na początek wystarczy:
[code]#include "..\_wtw2\.api\plInterface.h"

WTWFUNCTIONS *pF = NULL;
WTWPLUGINFO plugInfo = {
   
} ; <----- BRAKUJE DZYNDZLA

:)

mi też nie wykrywa jakiegoś modułu ;| i w ogóle nie działa widać tylko w okienku wtyczek wrrr :P

ktoś tu ma jakiś szkielet który faktycznie działa :P a nie tylko się kompiluje ?

Offline Dziaddu

  • Młodzież
  • **
Re: Podstawowy kod wtyczki
« Odpowiedź #36 dnia: Marzec 08, 2009, 11:23:33 am »
Jeśli pod VS, to nie mam (bo nie mam VS; kod pisałem na podstawie tego, co działa w C::B, zmieniając tylko konwencje wywołań funkcji na takie, które podobno działają w VS). Może Kaworu albo Malcom pomogą.

Jeśli pod C::B, to patrz: pierwszy post. Jeśli znasz się na rzeczy i wiesz jak zrobić dll-kę, to ten szkielet powinien Ci wystarczyć, żeby przerobić go na coś działającego pod VS.

Offline muni0alfons69

  • Młodzież
  • **
Re: Podstawowy kod wtyczki
« Odpowiedź #37 dnia: Czerwiec 23, 2009, 21:10:18 pm »
Cytat: n3oo
@kaw: a dało by rade udostępić ten base_plug w formie w której się od razu kompiluje (bez kwiatków) ? :P próbuje pod VS 2008 i już poprawiłem nawet błędne odwołania do nagłówków, skopiowałem API do folderu do którego są odwołania w projekcie :P ale nadal brakuje  "/libUI/interface.h" z pliku WndOptionsS.h :)

Jakimś psim swędem kasowałem, kroiłem itp. i w końcu skompilował mi to VC 2008.

W poniższym linku wszystko co pokroiłem razem z API by nic nie zabrakło.


Wiem, że trochę bawię się w archeologa, ale czy mógłbym prosić o re-upload?
Choć podejrzewam, że ten szkielet nie będzie kompatybilny ze zmienionym API...
Czy istnieje możliwość pozyskania zgodnej, aktualnej wersji?
Z góry dziękuję. ;)

wlodixon

  • Gość
Re: Podstawowy kod wtyczki
« Odpowiedź #38 dnia: Czerwiec 25, 2009, 16:32:27 pm »
Cytuj
Wiem, że trochę bawię się w archeologa, ale czy mógłbym prosić o re-upload?
Choć podejrzewam, że ten szkielet nie będzie kompatybilny ze zmienionym API...
Czy istnieje możliwość pozyskania zgodnej, aktualnej wersji?
Z góry dziękuję. ;)

Wysłałem Ci na maila - zobacz czy dziala i ewentualnie wrzuc na forum :)

Offline muni0alfons69

  • Młodzież
  • **
Re: Podstawowy kod wtyczki
« Odpowiedź #39 dnia: Czerwiec 25, 2009, 18:57:23 pm »
Dzięki wielkie, pozwól, że dopiero jutro przyjrzę się temu czemuś bliżej. ;)