![]() |
AW: Alle Systemweiten Eingaben abfragen
Zitat:
|
AW: Alle Systemweiten Eingaben abfragen
Der Begriff "Blödsinn" war vielleicht unglücklich gewählt.
|
AW: Alle Systemweiten Eingaben abfragen
Und so etwas war der Grund
![]() |
AW: Alle Systemweiten Eingaben abfragen
Eben.
Zitat:
|
AW: Alle Systemweiten Eingaben abfragen
So, ich habs jetzt mal auf einem anderen Weg versucht, nur bekomme ich hier immer EStackOverflow Error (nach 10s).
Mein Code (eigene Unit):
Delphi-Quellcode:
Mfg
unit GlobalPressedKey;
interface uses Windows, ExtCtrls, Classes; type TGlobalPressedKey = class(TObject) private KeyTimer: TTimer; procedure KeyTimerOnTimer(Sender: TObject); function GetPressedKey: Integer; procedure SetPressedKey(Key: Integer); public constructor Create(AOwner: TComponent; AIntervalKeyCheck: Integer = 10); property PressedKey: Integer read GetPressedKey write SetPressedKey default 0; destructor Free; end; implementation constructor TGlobalPressedKey.Create(AOwner: TComponent; AIntervalKeyCheck: Integer = 10); begin KeyTimer := TTimer.Create(AOwner); KeyTimer.Interval := AIntervalKeyCheck; KeyTimer.OnTimer := KeyTimerOnTimer; end; procedure TGlobalPressedKey.KeyTimerOnTimer(Sender: TObject); var i: Integer; begin For i := 1 to 300 do If GetAsyncKeyState(i) and 1 <> 0 then begin SetPressedKey(i); Exit; end; SetPressedKey(0); end; procedure TGlobalPressedKey.SetPressedKey(Key: Integer); begin PressedKey := Key; // Markiert wird immer diese Zeile aber naja.... es liegt doch irgendwie am Timer oder? end; function TGlobalPressedKey.GetPressedKey: Integer; begin Result := PressedKey; end; destructor TGlobalPressedKey.Free; begin KeyTimer.Free; end; end. |
AW: Alle Systemweiten Eingaben abfragen
Zitat:
|
AW: Alle Systemweiten Eingaben abfragen
Passt doch mit der markierten Zeile: "PressedKey" ist eine Eigenschaft der Klasse "TGlobalPressedKey", deren Setter "SetPressedKey" immer dann aufgerufen wird, wenn Du ihr einen Wert zuweist. Und wenn wir mal schauen, was in diesem Setter passiert, dann ... huch .. sehen wir, dass Du genau der Eigenschaft etwas zuweist, in deren Setter Du gerade bist. Das Programm läuft im Kreis und nach einer gewissen Zeit wird ihm schlecht.
|
AW: Alle Systemweiten Eingaben abfragen
Aber ich brauch den Getter doch um aus PressedKey zu lesen?!
Wie soll ich das dann machen? Hab sowas noch nicht oft gemacht^^ Mfg |
AW: Alle Systemweiten Eingaben abfragen
Deklarier Dir ein privates Integer-Feld namens FPressedKey. Auf das greifst Du dann zu.
Delphi-Quellcode:
procedure TGlobalPressedKey.SetPressedKey(Key: Integer);
begin FPressedKey := Key; end; function TGlobalPressedKey.GetPressedKey: Integer; begin Result := FPressedKey; end; |
AW: Alle Systemweiten Eingaben abfragen
Danke, klappt!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:47 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