Problem plugin Tlen & czas...

0

Napisałem szkielet plugina do Tlen'a w Delphi.
Plugin po włączeniu zaczyna co x czasu zmieniać opis tzn. wpisuje tam kolejne liczby (np.0 1 2 3 itd. do 100).
Mój problem jest następujący:
Plugin po włączeniu nie da się wyłączyć dopóki nie zliczy do 100 :(.
Korzystam z:

procedure delay(czas :integer);
var start : DWord;
begin
start:=GetTickCount;
while GetTickCount<start+czas do
begin
sleep(20);
Application.ProcessMessages;
end;
end;

i mimo, że jest "App.ProcMess", Program Tlen nie reaguje na odznaczenie CheckBoxa który wyłącza plugin...
Jest jakiś inny sposób pomiaru czasu, który nie obciąża nadmiernie proca ?

0

Do Tlena pisałem w Delphi już pojedyncze pluginy i powiem tak - pisanie w Delphi jest najgorszą z możliwości.

Ciężko jest połączyć API Tlena oraz VCL, a tym bardziej ciężko jest zapanować nad oknami VCL w bibliotece DLL. Ale oczywiście się da.

Co do odmierzania czasu polecam zrobić to na wątku. O Application.ProcessMessages możesz raczej zapomnieć, bo to Tlen obsługuje komunikaty w stylu zaznacanie/odznaczanie pluginów - możesz przechwycić jedynie wyładowanie plugina już z pamięci.

Od razu zaznaczę, że ludzie nie lubią pluginów robionych w Delphi, bo trzeba dorzucać pliki *.bpl, których oni prawie w 100% nie mają, a plugin powżej 500kB dla Tlena jest ogromnym, bo bez korzystania z VCL zajmie do 200kB - nie więcej.

Powodzenia.

P.S. Oto plugin napisany w 100% w Delphi 7 [że tak nieskromnie się pochwalę] - Chyba mam nawet jeszcze do niego gdzieś kod, ale nie dam za to głowy:
http://szczawik.psq.fm.interia.pl/listonosz%200.0.0.6.zip

// jak byś znalazł źródła, to ja jestem chętny - Ł

0

szczawik: a kto powiedzial ze pluginy trzeba pisac wykorzystujac vcl? a od czego jest winapi? sam pisze plugi do tlena i moge smialo powiedziec ze niektore mieszcza sie ponizej 30kb ;]

xaveri: tak jak napisano Ci na forum tlenowym zrob to w wątku (jak powiedzial tez szczawik) albo za pomoca timer'a (nowe sdk zawiera unit plugin_timer.h ale przetlumaczyc z cpp na pas bedziesz musial sobie sam, ewentualnie mozesz uzyc SetTimer+F1

0

Kto powiedział, że VCL? Xaveri. Application.ProcessMessages należy do unitu Forms, który jest jedną z głównych części VCL. A to, że można pisać w WinAPI to już zupełnie inna sprawa, ale nie wydaje mi się, by poprzednik był nią zainteresowany - VCL jednak ułatwia życie (a API zmiejsza plik :) ).

0

Zawsze jest kompromis ja chcąc zmniejszyć pliki wykonywalne z okienkami napisałem sobie nową wersje okienek bardzo podobną do VCl ale nie tak zautomatyzowaną i funkcjonalna jak VCL ale zancznie ułatwia życie w poruwnaniu z WinAPI. Jak ktoś jest zainteresowany to mogę to wrzucić.

0

No ja jestem zainteresowany ;) znacznie przyspieszylo by mi to pisanie... swoja droga ja napisalem sobie unita ktory nie tylko tworzy kontrolki ale rowniez w pelni kontroluje ich ownerdraw'y ;) w koncu kto powiedzial ze edity, buttony checkboxy czy groupboxy stworzone przez winapi maja miec standardowy wyglad? ;)

0

W SmallForms.zip są wszystkie potrzebne pliki.

0

Dzieki :) na pewno sie przyda

1 użytkowników online, w tym zalogowanych: 0, gości: 1