Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Tastensimulation Frage (https://www.delphipraxis.net/135168-tastensimulation-frage.html)

xxgoodboyxx 5. Jun 2009 21:48


Tastensimulation Frage
 
Hallo ich wollte mal einen Bot programmieren.
Da ich mit den Tastensimulationen erst angefangen habe würde ich gerne wissen was an meinem bisherigen Programm falsch ist...
Ich bekomme keine Fehlermeldung ; er zeigt mir lediglich die Showmessage nicht an :(

Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
keypreview:=true;
pressed := 0
end;

TKeyEvent = procedure TForm1.FormOnKeyPress(Sender: TObject; var Key: Word;
  Shift: TShiftState)of Object;
  property OnKeyDown: TKeyEvent;
begin
  if key = VK_F1 then Pressed:=1;

If Pressed=1 then Showmessage('Gut');

end;

mleyen 5. Jun 2009 21:58

Re: Tastensimulation Frage
 
Zitat:

Zitat von xxgoodboyxx
Da ich mit den Tastensimulationen erst angefangen habe würde ich gerne wissen was an meinem bisherigen Programm falsch ist...

Wie der Compiler sagt, es ist nichts falsch, es funktioniert alles wie es soll.

Ansonsten, falls du wirklich programmieren lernen willst: da
Der Rest ist Google -/ Forensuche.

Bots sind insgesamt ungern gesehen und oft auch strikt verboten, daher solltest du nicht vorraussetzten, das irgendwer dir was vorkaut.

Luckie 5. Jun 2009 23:07

Re: Tastensimulation Frage
 
Wird denn Pressed auch auf 1 gesetzte? Und formatier mal deinen Quellcode gescheit. Es erhöht auch die Lesbarkeit, wenn man sich auf eine Schreibweise der Schlüsselwörter festlegt.

xxgoodboyxx 6. Jun 2009 17:24

Re: Tastensimulation Frage
 
danke erstmal für die antworten...
Ja sry , aber es ist eine gute Aufgabe meine Delphi Kenntnisse in Tastensimulationen zu verbessern.
Aber wieso bekomm ich keine Message ausgespuckt?
Keine Ahnung ob Pressed den Wert 1 erhält ...

Hier nochmal der formatierte Quelltext:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
keypreview:=true;
pressed := 0
end;

TKeyEvent = procedure TForm1.FormOnKeyPress(Sender: TObject; var Key: Word;
  Shift: TShiftState)of Object;
  property OnKeyDown: TKeyEvent;
begin
  if key = VK_F1 then Pressed:=1;

If Pressed=1 then Showmessage('Gut');

end;

toms 6. Jun 2009 18:02

Re: Tastensimulation Frage
 
Was ist denn das??

Delphi-Quellcode:
TKeyEvent = procedure TForm1.FormOnKeyPress(Sender: TObject; var Key: Word;
  Shift: TShiftState)of Object;
  property OnKeyDown: TKeyEvent;

xxgoodboyxx 6. Jun 2009 18:21

Re: Tastensimulation Frage
 
hmm ich hab mir die delphi hilfe angeschaut und da stand des so

wenn ich es so mache funktioniert es auch nicht

Delphi-Quellcode:
procedure TForm1.FormOnKeyPress(Sender: TObject; var Key: Word;
  Shift: TShiftState)

quendolineDD 6. Jun 2009 18:47

Re: Tastensimulation Frage
 
Was benutzt du für eine Delphiversion? Bei mir gibt es nur OnKeyDown, OnKeyPress und OnKeyUp.
Das sieht dann ungefähr so aus:
Delphi-Quellcode:
procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_F1 then
    ShowMessage('F1 gedrückt');
end;
Funktioniert wunderbar.
Das hat jedoch bisher wenig mit Tastensimulation zu tun, da du ja bisher nur auf einen Tastendruck reagierst. Um deinem Thementitel gerecht zu werden gebe ich dir mal das Stichwort MSDN-Library durchsuchenSendMessage und MSDN-Library durchsuchenPostMessage.
Könnte es sein, das du die Funktion nicht über den OI sondern manuell eingetragen hast?

xxgoodboyxx 6. Jun 2009 18:56

Re: Tastensimulation Frage
 
hi hmm ich verstehe deine Frage nicht...
benutze delphi 7 und dein code funktioniert bei mir ebenfalls nicht :(

ich habe grade gesehen , dass ich wieso auch immer weiter oben ein " end." stehen hatte. Dadurch wurde der Text danach einfach ignoriert. Nachdem ich dieses jedoch entfernte wurde ich mit fehlermeldungen zugespamt...
Zb. Undefinierter Bezeichner FormCreat oder Keypreview...

Hier mal mein kompletter code :

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;


var
  Form1: TForm1;
  Pressed:integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
keypreview:=true;
pressed := 0
end;

procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_F1 then
    ShowMessage('F1 gedrückt');
end;



end.

quendolineDD 6. Jun 2009 18:59

Re: Tastensimulation Frage
 
Du scheinst die Zeilen einfach eingefügt zu haben. Gehe mal in deinen Objektinspektor (Standard-IDE links unten) und wähle deine Form aus. Nun gehst du auf den Reiter Ereignisse und suchst dir das OnKey-Ereignis aus, welches du benutzten willst und klickst in das leere Feld rechts daneben doppelt. Nun müsstest du dich im Quelltexteditor befinden mit dem Cursor in einer neuen Procedur.
Dürfte dann ca. so aussehen:
Delphi-Quellcode:
unit Unit2;

interface

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

type
  TForm2 = class(TForm)
    procedure FormKeyPress(Sender: TObject; var Key: Char);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.FormKeyPress(Sender: TObject; var Key: Char);
begin

end;

end.
Edit: Da dir anscheinend das Wissen um den Umgang mit der IDE und der Einbindung von Funktionen und Prozeduren fehlt, lege ich dir das Grundlagentutorial ans Herz.

xxgoodboyxx 6. Jun 2009 19:22

Re: Tastensimulation Frage
 
brauche nicht dieses tutorial , da ich in der schule mit informatik unterrichtet werde :D

angos 6. Jun 2009 19:40

Re: Tastensimulation Frage
 
Hi,

na wenn du das so siehst, solltest du dich vielleicht auch erst damit beschäften nachdem du unterrichtet wurdest.
Es gibt halt nicht viel Sinn etwas machen zu wollen, wenn die Grundlagen fehlen. Daher auch mein Tip: Schau dir das Tutorial ruhig an, schaden wirds nicht (und je nach Schule/Lehrer hast du damit vielleicht sogar mehr Wissen)

xxgoodboyxx 6. Jun 2009 23:33

Re: Tastensimulation Frage
 
hmmm komisch hab alles verbessert und nun bekomm ich in dieser zeile " inkompatible typen" angezeigt:

Delphi-Quellcode:
  if Key = VK_F1 then

mkinzler 6. Jun 2009 23:37

Re: Tastensimulation Frage
 
Zitat:

brauche nicht dieses tutorial , da ich in der schule mit informatik unterrichtet werde Very Happy
Das eine hat imho nicht mit dem anderen zu tun.
Zitat:

hmmm komisch hab alles verbessert und nun bekomm ich in dieser zeile " inkompatible typen" angezeigt:
Hast du den Typ von Key geändert?

xxgoodboyxx 6. Jun 2009 23:58

Re: Tastensimulation Frage
 
ja auf char... macht der aber automatisch wenn ich die onkey methode auswähle :P

mkinzler 7. Jun 2009 00:01

Re: Tastensimulation Frage
 
Delphi-Quellcode:
if Ord(Key) = VK_F1 then

xxgoodboyxx 7. Jun 2009 00:09

Re: Tastensimulation Frage
 
funktioniert auch nicht :( ich werde noch wahnsinnig... :D

mein bisheriger quellcode lautet :


Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    procedure FormCreate(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Word;Shift: TShiftState);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  pressed : Integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
keypreview:=true;
pressed := 0
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Ord(Key) = VK_F1 then
  ShowMessage('F1 gedrückt') ;
end;

end.

mkinzler 7. Jun 2009 00:23

Re: Tastensimulation Frage
 
Das Formular reagiert sio nicht auf Tasten.
Ich würde es mit der Registrierung eine hotkey versuchen. zB. mit TJvApplicationHotKey aus der JVCL

xxgoodboyxx 7. Jun 2009 00:32

Re: Tastensimulation Frage
 
mhh wieso geht es denn so nicht?

toms 7. Jun 2009 06:17

Re: Tastensimulation Frage
 
Zitat:

Zitat von xxgoodboyxx
mhh wieso geht es denn so nicht?

Warum verwendest du denn das OnKeyPress Ereignis? Lies doch mal in der OH über die OnKeyPress/OnKeyDown/OnKeyUp Ereignisse.

zu OnKeyPress steht u.a.:

Zitat:

Verwenden Sie die Ereignisbehandlungsroutine für OnKeyPress, um eine Aktion als Reaktion auf den Druck einer einzelnen Taste auszuführen.

Der Parameter Key in der Ereignisbehandlungsroutine für OnKeyPress hat den Typ Char. Deshalb registriert das Ereignis OnKeyPress das ASCII-Zeichen der gedrückten Taste. Entspricht die Taste keinem ASCII-Zeichenwert (beispielsweise Umschalt oder F1), wird kein OnKeyPress-Ereignis generiert.

xxgoodboyxx 7. Jun 2009 12:03

Re: Tastensimulation Frage
 
ah okay danke :P
wie könnte ich es denn anders machen , sodass es funktioniert?

mkinzler 7. Jun 2009 12:06

Re: Tastensimulation Frage
 
http://www.delphipraxis.net/internal...045674#1045674

toms 7. Jun 2009 12:07

Re: Tastensimulation Frage
 
Zitat:

Zitat von xxgoodboyxx
ah okay danke :P
wie könnte ich es denn anders machen , sodass es funktioniert?

OnKeyDown/OnKeyUp verwenden :cyclops:

xxgoodboyxx 7. Jun 2009 12:20

Re: Tastensimulation Frage
 
edit : funktioniert nun wunderbar , danke an euch alle :)

xxgoodboyxx 7. Jun 2009 12:56

Re: Tastensimulation Frage
 
Nun meine nächste Frage: Diese Methode funktioniert nur ,wenn das Programm im Vordergrund läuft.
Da es jedoch ein Bot werden soll ist dies weniger nützlich. Wie kann ich also das Programm so verändern , sodass ich auch während des Spiels Tasten drücken kann und der Bot darauf reagiert?

mkinzler 7. Jun 2009 13:01

Re: Tastensimulation Frage
 
Zitat:

Da es jedoch ein Bot werden soll ist dies weniger nützlich. Wie kann ich also das Programm so verändern , sodass ich auch während des Spiels Tasten drücken kann und der Bot darauf reagiert?
Dann solltest du dir mal unsere Nutzungbedingungen genauer durchlesen :warn:

xxgoodboyxx 7. Jun 2009 13:05

Re: Tastensimulation Frage
 
ihr habt mir so viel geholfen da könnt ihr mir doch auch noch den letzten Schritt geben...
Ich bin wenigstens ehrlich :P

mkinzler 7. Jun 2009 13:07

Re: Tastensimulation Frage
 
Zitat:

ihr habt mir so viel geholfen da könnt ihr mir doch auch noch den letzten Schritt geben...
Da wussten wir auch nicht was du vorhast

* * * G E S C H L O S S E N * * *


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