![]() |
Funktion wie Application.Processmessages für DLL ohne Forms
Ich habe eine DLL geschrieben in der ich eine Repeat-Until Schleife benutze.
Mit VCL gibt es die Möglichkeit mit Application.Processmessages auch während der Schleifendurchläufe ein "Einfrieren" oder langsames Arbeiten des Progammes bzw. der DLL zu verhindern. Gibt es eine Möglichkeit dies auch ohne Application.Processmessages und Forms zu realisieren? Vielen Dank für Eure Mühe Uwe Lange |
Re: Funktion wie Application.Processmessages für DLL ohne Fo
Wenn nichts zu sehen ist (VCL) was hat das dann für einen sinn :gruebel:
|
Re: Funktion wie Application.Processmessages für DLL ohne Fo
Er möchte vermutlich diese Funktion/Prozedur in seinem Programm aufrufen; wenn diese aber dann die Form einfriert ist das ungünstig. Deswegen sucht er nach einer Möglichkeit, ProcesMessages in die DLL einzubinden.
So hab ichs zumindest verstanden. :stupid: |
Re: Funktion wie Application.Processmessages für DLL ohne Fo
Ich kenn mich mit DLLs nicht gut aus, aber könnte man nicht die Prozedur in einen eigenen Thread auslagern?
|
Re: Funktion wie Application.Processmessages für DLL ohne Fo
Versuch mal mit getMessage(), z.B.:
Delphi-Quellcode:
var
m:tagMSG; begin while getMessage(m,0,0,0) do begin if m.message=WM_CLOSE then Break; DispatchMessage(m); end; end; |
Re: Funktion wie Application.Processmessages für DLL ohne Fo
Ich habe jetzt folgende Funktion bei Lucky-Online gefunden:
Delphi-Quellcode:
Procedure : ProcessMessages
Author : Nico bendlin Date : 2003-02-08 Purpose : Replacement for Application.ProcessMessages Arguments : hWnd: DWORD Result : None -----------------------------------------------------------------------------} procedure ProcessMessages(hWnd: DWORD); var Msg: TMsg; begin while PeekMessage(Msg, hWnd, 0, 0, PM_REMOVE) do begin TranslateMessage(Msg); DispatchMessage(Msg); end; end; aber ich weis nicht welchen Handle(hWnd) von der Procedure erwartet wird Gruß Uwe Lange [edit=sakura] [delphi]Tags Mfg, sakura[/edit] |
Re: Funktion wie Application.Processmessages für DLL ohne Fo
Also die Funktionalität ist ja folgende.
![]() Ich würde das der einfachhalthalber einfach in einem Thread auslagern oder in der Schleife eine Nachricht an das Fenster schicken und dort ![]() ![]() ![]() |
Re: Funktion wie Application.Processmessages für DLL ohne Fo
Hallo Lucky,
ich habe das Problem wie folgt gelöst: ich benutze in der DLL Processmessages von NicoDe
Delphi-Quellcode:
alle Processe die vorher nur schleppend abgearbeitet wurden,
repeat
Processmessages(getmodulehandle(nil)); DoIrgendwas; until .... arbeiten jetzt zufriedenstellend. Gruß Uwe Lange [edit=sakura] [delphi]Tags Mfg, sakura[/edit] |
Re: Funktion wie Application.Processmessages für DLL ohne Fo
Hi Uwe,
ich bitte Dich in Zukunft Deinen Code selbständig in [Delphi]-Tags zu packen. Wie das geht findest Du im Kodex (unten links ist ein Link) ...:cat:... |
Re: Funktion wie Application.Processmessages für DLL ohne Fo
man könnte das auch noch über ne callback funktion lösen die von der dll aus aufgerufen wird. Und in der callbackfunktion kann man dann ja das Application.ProcessMessages ausführen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 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