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:
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.
Mfg