Autor Beitrag
jackie05
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Mo 14.06.10 12:36 
Hallo,
wie kann ich in Timer1 die Tastatur abfragen?

Ich habe das so versucht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  Key: Word;
begin
  if (Key = VK_RETURN) then
  begin
    ShowMessage('Enter wurde gedrückt!');
  end;
end;


so funktioniert das irgendwie nicht.

Kann mir Vielleicht jemand helfen wie ich das Problem lösen kann?

Ich bedanke mich schonmal im Voraus.

MfG
Critter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 328
Erhaltene Danke: 3

Windows 7
Delphi 7 Pro.
BeitragVerfasst: Mo 14.06.10 12:40 
Hi,

das Konzept mutet mir doch ein wenig merkwürdig an, was genau möchtest du damit erreichen?

critter

_________________
Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)
jackie05 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Mo 14.06.10 12:47 
Ich möchte das bei jedem Tastendruck die Shifttaste aktiviert bzw. deaktiviert wird.

Ich möchte einfach ein Programm schreiben, mit dem ich einen Text mit Gross und Kleinbuchstaben schreiben kann.

z.B. DiEs IsT eIn TeSt!

Das Programm soll halt automatisch die Shifttaste bei jedem Tastatur eingabe aktivieren bzw. deaktivieren.

Tastatur Hook wäre mir für dieses kleine beispiel viel zu aufwändig.
Kann man das nicht irgendwie per Timer lösen?

Danke schonmal.

MfG
Tropby
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 71
Erhaltene Danke: 4

Vista, Win XP, Win 89
Turbo Delphi Ex.
BeitragVerfasst: Mo 14.06.10 12:51 
Nimm doch einfach den OnKeyPress von einem Edit Feld oder nem Memo Feld. Da kannst du doch dann einfach das letzte Zeichen welches in dem Feld steht lower- bzw. uppercase machen und schon hast du einen Text mit klein und groß Buchstaben.

_________________
Tropby
Tilo
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1098
Erhaltene Danke: 13

Win7 geg. WInXP oder sogar Win98
Rad2007
BeitragVerfasst: Mo 14.06.10 12:55 
Wollte das gleiche wie Tropby vorschlagen.

Aber eine Anmekerung habe ich noch dazu:
user profile iconjackie05 hat folgendes geschrieben Zum zitierten Posting springen:
Ich möchte einfach ein Programm schreiben, mit dem ich einen Text mit Gross und Kleinbuchstaben schreiben kann.

z.B. DiEs IsT eIn TeSt!

Das Programm soll halt automatisch die Shifttaste bei jedem Tastatur eingabe aktivieren bzw. deaktivieren.


Wäre die Ausgabe nicht eher "DiEs iSt eIn tEsT1"
Das Leerzeichen ist auch eine Tastatureingabe und aus "!" wird zumindest auf deutschen Tatsturlayouts "1".
jackie05 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Mo 14.06.10 12:56 
Danke Dir.
Das Problem ist, das ich nicht direkt in meinem Programm Texte schreiben möchte, sondern auch außerhalb von meinem Delphi-Programm auf Fremde-Anwendungen.

Kann man das irgendwie per Timer lösen?

Edit: @Tilo die Leertaste würde ich dann ambesten ignorieren, ich möchte das dann nur von Aa-Zz machen. ;-)

Danke schonmal.

MfG


Zuletzt bearbeitet von jackie05 am Mo 14.06.10 12:58, insgesamt 1-mal bearbeitet
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Mo 14.06.10 12:58 
Hi :)

Key kennst du vermutlich aus einer Methode wie OnKeyPress? Da ist es ja ein Parameter, und wird der Funktion so übergeben. Bei dir ist es einfach ein Variable. Und die muss ja zuerst mal initialisiert werden, sonst steht nichts drin. ;)

Was genau hast du vor, warum kannst du nicht die OnKeyPress-/OnKeyDown-Methode verwenden? Da bekommst du nämlich alles von Windows per Message mitgeliefert.

Ansonsten: GetAsciKeyState().

E: Mit einem Timer kannst du aber nur erreichen, dass alle n Millisekunden die Shift-Taste gedrückt wird - und du hast ja jetzt erstmal gefragt, wie du einen Tastendruck abfragen kannst.
Es ist zwar auch möglich, Tastendrücke zu simulieren(->Suche), ich würde aber lieber folgendes empfehlen: Lass den Nutzer seinen Text in ein Memo oder RichEdit schreiben, und bearbeite ihn auf Knopfdruck. Dadurch machst du keine Probleme, wenn die Anwendung minimiert ist.

lg,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)