AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi URLDownloadToFile Dialog hängt.
Thema durchsuchen
Ansicht
Themen-Optionen

URLDownloadToFile Dialog hängt.

Ein Thema von EWeiss · begonnen am 25. Jan 2019 · letzter Beitrag vom 27. Jan 2019
 
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: URLDownloadToFile Dialog hängt.

  Alt 26. Jan 2019, 14:09
Zitat:
Ich kenne mich in dem Bereich jetzt nicht wirklich aus, deine Botschaftenschleife sieht aber etwas komisch/verdächtig aus:
Hmm.. Du kennst ich nicht wirklich aus möchtest mir aber sagen das meine Messagequeue falsch ist?
Nun denn. Danke.

Sorry.. Hilft mir nicht wirklich weiter.
Schau mal was Application.ProcessMessages; denn so macht.

Ich könnte es auch so auslegen ändert aber nichts daran das mein Dialog hängt.

Delphi-Quellcode:
if(PeekMessage(msg, hDlg, 0, 0,PM_REMOVE)) then
  IsDialogMessage(hDlg, msg);
Der einzige unterschied ist hier das ich mir
Delphi-Quellcode:
TranslateMessage(ProcMsg);
DispatchMessage(ProcMsg);
sparen kann.
Zitat:
IsDialogMessage must not be passed to the TranslateMessage or DispatchMessage function.
Nun ich behandle es aber gerne mit.. Deshalb meine Funktion!
Das ich WM_QUIT mit behandle ist für mich so in Ordnung zur Sicherheit.

PS:
Nur zu deiner Information!
Delphi-Quellcode:
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=True)]
function TApplication.ProcessMessage(var Msg: TMsg): Boolean;
var
  Handled: Boolean;
  Unicode: Boolean;
  MsgExists: Boolean;
begin
  Result := False;

  MsgExists := PeekMessage(Msg, 0, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE);

  if MsgExists or PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE) then
  begin
    Unicode := (Msg.hwnd = 0) or IsWindowUnicode(Msg.hwnd);

    if not MsgExists then
    begin
      if Unicode then
        MsgExists := PeekMessageW(Msg, 0, 0, 0, PM_REMOVE)
      else
        MsgExists := PeekMessageA(Msg, 0, 0, 0, PM_REMOVE);
    end;

    if MsgExists then
    begin
      Result := True;
      if Msg.Message <> WM_QUIT then
      begin
        Handled := False;
        if Assigned(FOnMessage) then FOnMessage(Msg, Handled);
        if not IsPreProcessMessage(Msg) and not IsHintMsg(Msg) and
          not Handled and not IsMDIMsg(Msg) and
          not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then
        begin
          TranslateMessage(Msg);
          if Unicode then
            DispatchMessageW(Msg)
          else
            DispatchMessageA(Msg);
        end;
      end
      else
      begin
  {$IF DEFINED(CLR)}
        if Assigned(FOnShutDown) then FOnShutDown(self);
        DoneApplication;
  {$IFEND}
        FTerminate := True;
      end;
    end;
  end;
end;
gruss

Geändert von EWeiss (11. Jul 2019 um 15:55 Uhr)
  Mit Zitat antworten Zitat
 


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 00:20 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