AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Funktion wie Application.Processmessages für DLL ohne Forms

Funktion wie Application.Processmessages für DLL ohne Forms

Ein Thema von the-networker · begonnen am 4. Aug 2004 · letzter Beitrag vom 8. Aug 2004
Antwort Antwort
Seite 1 von 2  1 2   
the-networker

Registriert seit: 25. Okt 2003
Ort: Dortmund
33 Beiträge
 
Delphi 7 Professional
 
#1

Funktion wie Application.Processmessages für DLL ohne Forms

  Alt 4. Aug 2004, 12:08
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
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

Re: Funktion wie Application.Processmessages für DLL ohne Fo

  Alt 4. Aug 2004, 12:18
Wenn nichts zu sehen ist (VCL) was hat das dann für einen sinn
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Funktion wie Application.Processmessages für DLL ohne Fo

  Alt 4. Aug 2004, 12:31
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.
Julian J. Pracht
  Mit Zitat antworten Zitat
Jörn

Registriert seit: 5. Sep 2003
Ort: Helmstedt
312 Beiträge
 
#4

Re: Funktion wie Application.Processmessages für DLL ohne Fo

  Alt 4. Aug 2004, 12:53
Ich kenn mich mit DLLs nicht gut aus, aber könnte man nicht die Prozedur in einen eigenen Thread auslagern?
  Mit Zitat antworten Zitat
Benutzerbild von XHelp
XHelp

Registriert seit: 12. Jul 2004
Ort: Duisburg
172 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: Funktion wie Application.Processmessages für DLL ohne Fo

  Alt 4. Aug 2004, 12:56
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;
Alex
Von allen Dingen die mir verloren gegangen,
hab ich am meisten an meinem Verstand gehangen
  Mit Zitat antworten Zitat
the-networker

Registriert seit: 25. Okt 2003
Ort: Dortmund
33 Beiträge
 
Delphi 7 Professional
 
#6

Re: Funktion wie Application.Processmessages für DLL ohne Fo

  Alt 4. Aug 2004, 13:15
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]
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Funktion wie Application.Processmessages für DLL ohne Fo

  Alt 4. Aug 2004, 15:29
Also die Funktionalität ist ja folgende. Delphi-Referenz durchsuchenApplication.Processmessages und Nicos Routine machen ja folgendes, sie veranlassen das Programm dazu in die Messageloop des Fensters zu gehen und zu kucken, ob Nachrichten anliegen, wenn ja werden diese abgearbeitet. Nur hat eine DLL keine Messageloop und bekommt von Windows auch keine Nachrichtenschlange zugewiesen.

Ich würde das der einfachhalthalber einfach in einem Thread auslagern oder in der Schleife eine Nachricht an das Fenster schicken und dort Delphi-Referenz durchsuchenApplication.Processmessages aufrufen. Dies muss aber mit MSDN-Library durchsuchenSendMessage passieren, da MSDN-Library durchsuchenpostmessage sofort zurückkehrt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
the-networker

Registriert seit: 25. Okt 2003
Ort: Dortmund
33 Beiträge
 
Delphi 7 Professional
 
#8

Re: Funktion wie Application.Processmessages für DLL ohne Fo

  Alt 8. Aug 2004, 10:18
Hallo Lucky,

ich habe das Problem wie folgt gelöst:

ich benutze in der DLL Processmessages von NicoDe

Delphi-Quellcode:
repeat
Processmessages(getmodulehandle(nil));
DoIrgendwas;
until ....
alle Processe die vorher nur schleppend abgearbeitet wurden,
arbeiten jetzt zufriedenstellend.

Gruß
Uwe Lange

[edit=sakura] [delphi]Tags Mfg, sakura[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#9

Re: Funktion wie Application.Processmessages für DLL ohne Fo

  Alt 8. Aug 2004, 11:35
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)

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Funktion wie Application.Processmessages für DLL ohne Fo

  Alt 8. Aug 2004, 12:52
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
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 Uhr.
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