![]() |
Delay-Procedure in DLL auslagen
Hallo,
da ich die Delay-Procedure für ein Projekt in zwei Applicationen brauche, hab ich mir gedacht, ich lagere die Delay-Procedure in eine DLL aus. (war für mich auch ein Anfang in der DLL-Programmierung) Nur hab ich Bedenken, ob jetzt die Delay-Procedure nichts mehr bringt, also genau so arbeitet wie "sleep". (Nochmals zur Erinnerung die Delay-Procedure:)
Delphi-Quellcode:
Wer kann mir meine Zweifel nehmen?
procedure Delay(Milliseconds: Integer); stdcall;
var Tick: DWord; Event: THandle; begin Event := CreateEvent(nil, False, False, nil); try Tick := GetTickCount + DWord(Milliseconds); while (Milliseconds > 0) and (MsgWaitForMultipleObjects(1, Event, False, Milliseconds, QS_ALLINPUT) <> WAIT_TIMEOUT) do begin Application.ProcessMessages; Milliseconds := Tick - GetTickcount; end; finally CloseHandle(Event); end; end; |
Re: Delay-Procedure in DLL auslagen
woher kennt die Delay-procedure in der DLL denn "Application"?
|
Re: Delay-Procedure in DLL auslagen
durch:
Delphi-Quellcode:
aber deshalb bin ich mir nicht sicher, ob dann noch delay die eigentliche funktion hat, die es haben soll
uses
Forms; |
Re: Delay-Procedure in DLL auslagen
*push*
Ist das mit dem Delay und Application in ner dll in ordnung? bin noch unsicher |
Re: Delay-Procedure in DLL auslagen
So sieht ProcessMesasges aus:
Delphi-Quellcode:
Du wirst wohl auf alle Fälle noch das Handle des Fensters mitgeben und obige Version nehmen müssen, da in der DLL ja dein Fentser nicht bekannt ist.
procedure ProcessMessages(hWnd: DWORD);
var Msg : TMsg; begin while PeekMessage(Msg, hWnd, 0, 0, PM_REMOVE) do begin TranslateMessage(Msg); DispatchMessage(Msg); end; end; |
Re: Delay-Procedure in DLL auslagen
Hallo Luckie,
das würde aber jetzt bedeuten, dass die jetzige Delay-Procedure in der DLL-Datei wie Sleep arbeitet oder? [Edit] Luckie, woher hast du den code von dem ProcessMessages? bei Delphi hab ich nur diesen Code gefunden:
Delphi-Quellcode:
und da übergibt mann keinen Handle.
procedure TApplication.ProcessMessages;
var Msg: TMsg; begin while ProcessMessage(Msg) do {loop}; end; [/Edit] |
Re: Delay-Procedure in DLL auslagen
Da übergibt man kein Handle, weil das eine private Variable in der Klasse ist und somit auch bekannt. Und wo ich das her habe? Selber geschrieben.
|
Re: Delay-Procedure in DLL auslagen
Zitat:
Danke vielmals!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz