Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Timer in DLL ohne ComCtrl (https://www.delphipraxis.net/69322-timer-dll-ohne-comctrl.html)

DarkPressure 13. Mai 2006 15:05


Timer in DLL ohne ComCtrl
 
Moin Leute,

Wie kann ich einen Timer in einer DLL schreiben ohne dabei die VCL ComCtrl zu verwenden?

Soweit ^^
mit viel Grüßen DP

Olli 13. Mai 2006 15:36

Re: Timer in DLL ohne ComCtrl
 
Man nehme die Win32 API?!

MSDN-Library durchsuchenSetTimer

DarkPressure 13. Mai 2006 16:45

Re: Timer in DLL ohne ComCtrl
 
Daran dachte ich auch schon.
Nur gehört der DLL nicht das Fenster
--
Hat sich erledigt, geht auch so :)

Olli 13. Mai 2006 17:23

Re: Timer in DLL ohne ComCtrl
 
Ähem ... du kannst auch 0 statt einem gültigen Fensterhandle angeben. Ein Timer braucht ja kein Fenster. Aber dann braucht der Timer mindestens eine Callback-Funktion ...

DarkPressure 14. Mai 2006 00:01

Re: Timer in DLL ohne ComCtrl
 
Kannst du villeicht ein Beispiel machen.
Bei mir hält er sich einfach nicht ans Delay :?

DevilsCamp 14. Mai 2006 08:15

Re: Timer in DLL ohne ComCtrl
 
Oder Du benutzt AllocateHWnd.
Damit kannst du einer fensterlosen Komponente eine Methode geben um auf Windows-Botschaften zu reagieren.
Vielleicht funktioniert das auch in einer DLL.

DarkPressure 14. Mai 2006 10:41

Re: Timer in DLL ohne ComCtrl
 
Ne kann ich nicht, lässt der Prozess nicht zu.
Der crasht dann.
Das dürfte aj so mit dem Timer klappen, nur brauch ich maln gutes Beispiel.

Olli 14. Mai 2006 12:16

Re: Timer in DLL ohne ComCtrl
 
Zitat:

Zitat von DarkPressure
Kannst du villeicht ein Beispiel machen.
Bei mir hält er sich einfach nicht ans Delay :?

Ähem ... ja. Windows ist halt kein Echtzeitbetriebssystem. Nicht einmal wenn du im Kernel agierst, kannst du sagen, ob du direkt Zeit vom Scheduler zugewiesen bekommst.

Beispiel muß ich nochmal nachliefern wenn ich mein PSDK wieder hinbekommen hab. Läuft irgendwie gerade nicht ...

DarkPressure 14. Mai 2006 12:22

Re: Timer in DLL ohne ComCtrl
 
Scheduler ich weiß nicht was du meinst.
Das läuft so:
Meine DLL bekommt ne Nachricht vom Hauptprogramm über madCodeHook.
Soweit so gut..
In der Nachricht steht ene Delay Zeit in Millisekunden und die soll der Timer nutzen.
Delphi-Quellcode:
const IDC_TIMER1 = 100;
var
    Continue: boolean;
    SendString: string;
    LastSocket: integer;
    Delay: integer;
function Funktion: pointer; stdcall;
begin
    Send(LastSocket, SendString[1], 26, 0);
    if Continue = True then
    SetTimer(0, IDC_TIMER1, Delay, Funktion)
    else
    begin
    end;
end;
Dann ruf ichw enn ich die Nachricht erhalte einfach diese Funktion auf.
Aber dann macht er ohne irgendein Delay die ganze Zeit spammen.
EDIT: Ich glaub ich weiß was falsch ist

Olli 14. Mai 2006 12:30

Re: Timer in DLL ohne ComCtrl
 
Ich will dir damit nur sagen, daß du niemals auch nur auf eine 100%ige Einhaltung deiner Vorgaben hoffen kannst. Es ist eben kein Echtzeitbetriebssystem.

In welchem Verhältnis stehen "DLL" und "Hauptprogramm"? Ist die DLL ins Hauptprogramm geladen? Warum arbeitest du mit Sockets?

Versuche einfach mal zu beschreiben, was du tun willst - anstatt dich auf eine Methode zu versteifen, die u.U. nicht optimal zum Ziel führt. Also was willst du tun?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:54 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz