Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Tastatur sperren wen... (https://www.delphipraxis.net/3011-tastatur-sperren-wen.html)

NeoDeluxe 18. Feb 2003 10:34


Tastatur sperren wen...
 
Moin.
Ich wollte nur wiessen, wie mann Tastatur serren kann? Es ist für mein Project sehr wichtig, wenn ein Benutzer z.B. eine Taste drückt, dann muss die Tastatru gesperrt werden, :warn: aber die maus nicht! Es ist wichtig, dass die Maus funktionieren soll. Also wer kann mir helfen?

Luckie 18. Feb 2003 10:52

Ein Tastatur Hook wäre wohl die Lösung. Aber darf man fragen, wo der tiefere Sinn liegt? Also warum das ganze? Eventuell gibt es noch eine einfachere Lösung.

NeoDeluxe 18. Feb 2003 14:28

Kein Problemm.
Also es ist für ein Spiel. Da muss man auf ein bewegenden Object drücken. Natürlich mit der Maus.Da es ziemlich einfach wäre mit der TAB Taste den Object zu erreichen, will ich die Tastatur sperren. Sobald der Benutzter da drauf klickt, kriegt er Punkte usw.! Eigentlich will ich noch eine Funktion einbauen. Also wenn der Benutzter die Maus schneller bewegt, bewegt sich der Object paralell schneller. Also so zu sagen ein geschicktlichkeits Spiel. :coder:

Jan 18. Feb 2003 15:01

Dann sperr doch einfach die tab-taste...
Gruß
Jan

NeoDeluxe 18. Feb 2003 15:04

Lustig, aber wie, ich würd geren die ganzen tasten ausschalten. 8)

Jan 18. Feb 2003 15:11

hier wird beschrieben wie man tasten sperrt, und wenn du nur verhindern willst, dass man ein objekt per tab-taste erreichen kann, dann sollte das reichen, und du musst nicht die ganze tastatur sperren, was mich persönlich tierisch aufregen würde, weil man dann ja nichtmehr in den taskmanager kommen würde, oder das programm per shortcut beenden könnte:

http://www.delphipraxis.net/internal...+beschr%E4nken

Gruß
Jan

NeoDeluxe 18. Feb 2003 15:17

haste recht, aber wie mach ich das ich habe das gelesen und nichts verstanden. Kann mir jemand ausfürlich alles schritt im schritt erklären?

Sharky 18. Feb 2003 15:39

Ähhmmm.....

warum nicht einfach bei dem Object TabStop := False ?

City Light 18. Feb 2003 19:04

Hallo Neo

das habe ich gefunden ,lag im mein SAM MANAGER *gg*

Delphi-Quellcode:
{Tastatur und Mauseingaben in der eigenen Applikation ignorieren?}

  private
    procedure AppOnMessage(var Msg: TMsg; var Handled: Boolean);
    { Private declarations } 
  public
    { Public declarations } 
  end;
   
var
  Form1: TForm1;

implementation

{$R *.dfm} 

var
  FConnected: Boolean;

procedure TForm1.AppOnMessage(var Msg: TMsg; var Handled: Boolean);
begin
  if FConnected then
    case Msg.Message of
      WM_KEYFIRST..WM_KEYLAST,    // Keyboard events
      WM_MOUSEFIRST..WM_MOUSELAST: // Mouse events
        Handled := True
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnMessage := AppOnMessage;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Application.OnMessage := nil;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  FConnected := True;
end;

NeoDeluxe 18. Feb 2003 19:16

THX :mrgreen:
Hat jemand eine andere Idee?

janjan 18. Feb 2003 19:23

Nimm ein Objekt das man nicht per Tab auswählen kann ;)

Ernsthaft, was soll denn das für ein Objekt sein, das man treffen soll?

City Light 18. Feb 2003 19:27

Zitat:

Zitat von NeoDeluxe
THX :mrgreen:
Hat jemand eine andere Idee?

:wiejetzt:

Es ist doch das wo nach du doch suchst oder wie ??

wenn du es so machst bleibt die Mouse noch aktiv!
Delphi-Quellcode:
procedure TForm1.AppOnMessage(var Msg: TMsg; var Handled: Boolean);
begin
  if FConnected then
    case Msg.Message of WM_KEYFIRST..WM_KEYLAST: Handled := True;
    end;
end;

NeoDeluxe 18. Feb 2003 19:31

Sorry :cry: , ich habe das noch nicht ausprobiert! Aber das kommt so etwa in die Richtung.

City Light 18. Feb 2003 19:36

<NeoDeluxe mal ein Taschentuch reicht> :mrgreen:

Grüße Tino

NeoDeluxe 18. Feb 2003 19:39

Danke. Ich glaub ich habe bisher mehr Entschuldigungen als normale Beiträge in diesem Forum geschrieben! Aber das macht nichts :mrgreen: ! Ich entschuldige mich gerne 8) :angle:

Daniel B 19. Feb 2003 21:33

Hi,

wer ein bisschen masochistisch veranlagt ist, dem könnte dies helfen: ;)

"Rundll Keyboard,Disable"

Wie man dies ausführt werde ich allerdings nicht dazu schreiben. Aber so kann man die Tastatur ausschalten und zwar komplett!

Grüsse, Daniel :hi:

NeoDeluxe 21. Feb 2003 06:13

@City Light:
Sorry aber deine Methode geht irgendwie nicht! warum weis ich selber net, aber es passiert gar nichts. Ich muss die Tastatur komplett ausschalten! Dann geht das, oder hat jemand eine andere idee?

City Light 21. Feb 2003 12:31

hm ?! beschreib mal was da nicht funktioniert!!!
oder kann das daran liegen das du Delphi 2 hast

gruß Tino

NeoDeluxe 21. Feb 2003 14:10

Glaub keiner Statistik, die du nicht selbst gefälscht hast!(Anonymer Statistiker!) :lol:
Also ich habe sehr viele Delphi Versionen, bei allen geht das nicht. Ich mache einen Edit auf dem Form und man kann trotzdem tippen. Warum? Kein Plan!

City Light 21. Feb 2003 14:19

Wie sieht denn deinen Unit aus?

Ich habs mal getestet und bei mir läufst Super!
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure AppOnMessage(var Msg: TMsg; var Handled: Boolean);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  FConnected: Boolean;

procedure TForm1.AppOnMessage(var Msg: TMsg; var Handled: Boolean);
begin
  if FConnected then
    case Msg.Message of
      WM_KEYFIRST..WM_KEYLAST:    // Keyboard events
        Handled := True
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnMessage := AppOnMessage;
  FConnected := True;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Application.OnMessage := nil;
end;

end.


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