AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"OnIdle" per WinAPI

Ein Thema von 3_of_8 · begonnen am 3. Feb 2007 · letzter Beitrag vom 3. Feb 2007
Antwort Antwort
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#1

"OnIdle" per WinAPI

  Alt 3. Feb 2007, 16:14
Morgen.

Ich habe mir ein Fenster mit einer WndProc erstellt und will jetzt, dass eine Funktion aufgerufen wird, wenn die Anwendung gerade "idlet", also so wie bei TApplication.OnIdle. In der Fensterprozedur funktioniert das ganze nicht wirklich und bei meiner Messageschleife geht das komischerweise nur dann, wenn das Fenster gerade Messages empfängt. (Verstehe ich ehrlich gesagt nicht, denn die Schleife wird ja ständig abgearbeitet, nicht nur wenn grad Messages da sind.)
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: "OnIdle" per WinAPI

  Alt 3. Feb 2007, 16:50
Zitat von 3_of_8:
Verstehe ich ehrlich gesagt nicht, denn die Schleife wird ja ständig abgearbeitet, nicht nur wenn grad Messages da sind.
Das denkst du. Es besteht aber ein Unterschied zwischen GetMessage() und PeekMessage(..., PM_REMOVE). GetMessage() ruft intern WaitMessage() auf, womit GetMessage() nur zurückkehrt, wenn eine Botschaft vorhanden ist. Ist keine da, wird der aktuelle Thread schlafen gelegt bis eine Message kommt. Da z.B Application.ProcessMessages PeekMessage() benutzt schnallt die CPU belastung dabei auf 100% hoch, wenn es in einer Schleife ausgeführt wird; wohingegen GetMessage() nahezu 0% CPU Last verschlinkt.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: "OnIdle" per WinAPI

  Alt 3. Feb 2007, 17:25
*kratz*

Und wie ist das dann mit dem OnIdle?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: "OnIdle" per WinAPI

  Alt 3. Feb 2007, 17:47
Schau dir den Code doch einfach mal an.

Die VCL nutzt PeekMessage(..., PM_REMOVE), ruft aber im TApplication.DoIdle die WaitMessage API Funktion auf (sofern Done auf True gesetzt wurde).
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: "OnIdle" per WinAPI

  Alt 3. Feb 2007, 19:21
Nicht alle sind glückliche Besitzer einer Professional-Version.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

Re: "OnIdle" per WinAPI

  Alt 3. Feb 2007, 19:43
Wofür brauchst du eine Professional Version. Turbo Delphi Explorer kommt mit vollem VCL und RTL Quellcode daher.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: "OnIdle" per WinAPI

  Alt 3. Feb 2007, 19:55
Ja, aber das Ding läuft nicht auf meinem Notebook. Jedenfalls habe ich keine Quellcodedateien. Sonst hätte ich schon längst nachgeschaut. Mit PeekMessage() klappt das ganze jetzt jedenfalls, danke.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

Re: "OnIdle" per WinAPI

  Alt 3. Feb 2007, 20:22
Zitat von 3_of_8:
Jedenfalls habe ich keine Quellcodedateien. Sonst hätte ich schon längst nachgeschaut.
Du musst nur den vorgeschalteten Selfextractor ausführen. Danach sollte in dessen "temporären" Verzeichnis der "Source" Ordner zu finden sein. Die volle Installation musst du dabei nicht durchlaufen.
  Mit Zitat antworten Zitat
Antwort Antwort


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