Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Tastencodes in Case-Anweisung (https://www.delphipraxis.net/82409-tastencodes-case-anweisung.html)

dangerfreak 12. Dez 2006 17:54


Tastencodes in Case-Anweisung
 
Hallo ich will grad ein Programm schreiben was Tastencodes abfängt, und da wollte ich eine Case-Anweisung schreiben aner bekomm das nicht hin. Habt Ihr da eine Idee?
Hier meine IF-Anweisung zu dem Thema:
Delphi-Quellcode:
function Tasten2: Integer;
begin
for i:=0 to high(keys) do keys[i]:=GetAsyncKeyState(i)=0;
if keys[VK_Space]=false then result:=VK_Space else if
keys[VK_DOWN]=false then result:=VK_DOWN else if
keys[ord( 'M' )]=false then result:=ord( 'M' ) else result:=i;
end;
mfg Dangerfreak

Der_Unwissende 12. Dez 2006 20:51

Re: Tastencodes in Case-Anweisung
 
Hi,
was genau möchtest du denn machen? Soll dein Programm wenn es den Fokus hat alle Tastendrücke empfangen oder möchtest du wirklich alle Tasten abfangen?

An sich gilt für case, dass du hier die Belegung einer einzelnen Variable aus mehreren Möglichkeiten auswählst. Diese Variable muss zudem noch von einem ordinalen Typ sein, aber das ist hier eher unwichtig.
In deinem Fall gibt es schon keine solche Variable, du überprüfst hier verschiedene Elemente in einem Array, jedes dieser Elemente ist dabei eine eigene Variable. Hier könntest du natürlich für eine bestimmte Position durch ein Case unterscheiden, ob die Taste noch gedrückt ist oder nur gedrückt wurde (das sind zwei verschiedene Belegungen der gleichen Variable).

Der Übersichthalber solltest du den Code auch etwas strukturierter aufschreiben, so dass die Zuordnung von Bedingung und Auswirkung deutlicher ist.

Delphi-Quellcode:
function Tasten2: Integer;
var i : Integer;
begin
  for i := 0 to high(keys) do
  begin
    keys[i] := (GetAsyncKeyState(i) = 0);
  end;

  if keys[VK_Space] = false then
  begin
    result:=VK_Space
  end
  else if keys[VK_DOWN] = false then
  begin
    result:=VK_DOWN
  end
  else if keys[ord( 'M' )] = false then
  begin
    result:=ord( 'M' )
  end
  else
  begin
    result:=i;
  end;
end;
Die Begin und Ends mögen keine Auswirkungen auf die Korrektheit des Codes haben, aber doch auf die Lesbarkeit. An sich solltest du auch mit deinem letzten else Fall aufpassen, eine Variable, die in einer Zählschleife verwendet wird, hat nach dem durchlaufen der Schleife keinen definierten Wert mehr. Du solltest hier lieber high(keys) zuweisen oder i in einer while-Schleife erhöhen.

Gruß Der Unwissende

StarFire 12. Dez 2006 22:10

Re: Tastencodes in Case-Anweisung
 
http://forum.dsdt.info/viewtopic.php?t=31782

Für diejenigen welche es interessiert, was es wirklich werden soll.
2. Versuch an Infos für einen Virus zu kommen.

http://forum.dsdt.info/viewtopic.php?t=31712

Wie ihr damit umgeht, müsst ihr selbst wissen.

Der_Unwissende 13. Dez 2006 13:03

Re: Tastencodes in Case-Anweisung
 
Nun ja, eigentlich müssen wir das nicht selbst wissen, nicht zuletzt dafür gibt es die Forenregeln und die Moderatoren, die u.A. für die Einhaltung der Regeln da sind.

Aber unabhängig davon was hier (wie in so ziemlich allen Foren) vorgeschrieben wird oder nicht, was genau hätte ich denn davon, dich beim Bau eines Virus zu unterstützen? Wäre es da nicht leichter, wenn ich dir meine Logins+Passwörter zu schicke? Musst du dann schließlich nicht filtern. Wer also denkst du will dir helfen, dass du (vermeintlich) an seine Daten kommst? Ob du überhaupt an einem Firewall, Proxy oder Ähnlichem vorbei kommst, das lasse ich hier mal so dahingestellt sein.

Jedenfalls ist das nicht all zu kreativ, gab es imho schon oft genug, abhalten davon kann (und möchte dich keiner), also viel Spaß beim Virenschreiben.

Mein ernst gemeinter Tipp ist aber, versuch erstmal die Funktionen die du da benutzt richtig zu verstehen (wenn ich die Beiträge lese denke ich fehlt da noch ein wenig Wissen) und beschäftige dich lieber mit der anderen Seite, der Abwehr solcher Programme. Da gehört dann deutlich mehr dazu, denn Daten heimlich zu lesen und raus zu schmuggeln, hm, kann jeder, wirklich! Aber das zu erkennen, viel interessanter! Und damit kannst du dann später auch mal Geld verdienen.

Gruß Der Unwissende

Phoenix 13. Dez 2006 13:58

Re: Tastencodes in Case-Anweisung
 
1.) Wenn es ein identisches Thema in einem anderen Forum gibt wäre es zumindest nett, im beitrag darauf hinzuweisen. So kann man ggf. dort schon gucken ob es eine Antwort gibt bevor man sich selber die Mühe macht zu antworten. (Link zu DSDT war ja oben schon).

2.) Jupp, Keylogger / Trojaner, Viren etc. werden auch hier nicht unterstützt.

=== CLOSED ===


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