![]() |
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:
mfg Dangerfreak
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; |
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:
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.
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; Gruß Der Unwissende |
Re: Tastencodes in Case-Anweisung
![]() Für diejenigen welche es interessiert, was es wirklich werden soll. 2. Versuch an Infos für einen Virus zu kommen. ![]() Wie ihr damit umgeht, müsst ihr selbst wissen. |
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 |
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