![]() |
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? |
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.
|
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: |
Dann sperr doch einfach die tab-taste...
Gruß Jan |
Lustig, aber wie, ich würd geren die ganzen tasten ausschalten. 8)
|
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:
![]() Gruß Jan |
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?
|
Ähhmmm.....
warum nicht einfach bei dem Object TabStop := False ? |
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; |
THX :mrgreen:
Hat jemand eine andere Idee? |
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? |
Zitat:
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; |
Sorry :cry: , ich habe das noch nicht ausprobiert! Aber das kommt so etwa in die Richtung.
|
<NeoDeluxe mal ein Taschentuch reicht> :mrgreen:
Grüße Tino |
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:
|
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: |
@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? |
hm ?! beschreib mal was da nicht funktioniert!!!
oder kann das daran liegen das du Delphi 2 hast gruß Tino |
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! |
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 11:10 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