Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi WM Messagewarteschlange leeren! (https://www.delphipraxis.net/74906-wm-messagewarteschlange-leeren.html)

richard_boderich 10. Aug 2006 16:55


WM Messagewarteschlange leeren!
 
moin

ich hab ein kleines problem. mittels Registerhotkey und WMI werte ich einen tastendruck aus.
das klappt auch ganz prima. aber wenn mein programm den tastendruck auswertet, und den finger auf der taste lasse entsteht eine wartepause bis alle ereignisse aus der WMI warteschlage abgearbeitet sind. in dieser zeit reagiert meine anwendung nicht. ich suche jetzt also nach einer moeglichkeit
am anfang meiner auswertungsroutine die Messages abzustellen bzw. weitere zu verwerfen und
am ende meiner auswerteroutine wieder in kraft zu setzten.

also sowas wie onmousedown:=nil;

ich hoffe ihr wisst was ich meine

gruss richard

Luckie 10. Aug 2006 23:50

Re: WMI Messagewarteschlange leeren!
 
Zitat:

Zitat von richard_boderich
mittels Registerhotkey und WMI werte ich einen tastendruck aus.

Was hat WMI damit zu tun? WMI ist die Windows Managment Instrumentation und hat nichts mit Hotkeys zu tun.

richard_boderich 11. Aug 2006 08:49

Re: WMI Messagewarteschlange leeren!
 
hallo luckie

der tastendruck wird mit WM_hotkey message an mein form weitergeleitet. net man das nich WMI?
wenn nich tut es mir leid. wusste ich nich das das falsch war. mal ne theoretische frage.
wenn ich fuer register hotkey den handle temporäer auf nil setzt waer da ne moeglichkeit?

PS: du hast mich auf die idee mit register hotkey gebracht ;)

gruss richard

Boombuler 11. Aug 2006 08:55

Re: WM Messagewarteschlange leeren!
 
Hi,

1) Das nennt man nicht WMI ...
2) Du könntest die Nachrichten in einzelnen Threads bearbeiten.
3) Du nimmst doch n Hook ;)

Greetz
Boombuler

rbonk 11. Aug 2006 17:43

Re: WM Messagewarteschlange leeren!
 
Hallo Richard,

Messages kann man mit der Win-API- Funktion PeekMessage aus der Warteschlange rausschmeissen. Beispielsweise

Delphi-Quellcode:
interface
uses Windows, Messages, Forms;

implementation

procedure FlushMessageQueue_WMHotkey;
var
  msg : TMsg;
begin
  while PeekMessage (msg, Application.Handle, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) do;
end;
Statt 'Application.Handle' muss eventuell 0 (gesamter Thread) oder das Handle Deines Fensters verwendet werden - Ich weiss nicht genau.

Ess müsste genügen wenn Du diese Funktion einmal am Ende der HotKey - Verarbeitungsroutine einnfügst.

Gruss,
Randolf


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:42 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