kostenloser Webspace werbefrei: lima-city


Send Keys - A und B gleichzeitig drücken?

lima-cityForumProgrammiersprachenDelphi & Pascal

  1. Autor dieses Themas

    f*********s

    Naja der Titel sagt schon alles. Ich habe die SendKeys funktion und will Taste A und B glecihzeitig drücken.

    SendKeys('{A}', false);
    SendKeys('{B}', false);

    Also das geht nicht.

    Kann mir jemand helfen?

    Gruss
    funcartoons
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    Hi! Ich hab' auch mal ein bisschen gegoogelt, und nichts brauchbares gefunden. Was ich mir so nach und nach gedacht habe: geht das überhaupt? Ich habe nämlich auch umgekehrt (also zum Abfragen) nur Routinen gefunden, die die "Sondertasten" wie Ctrl, Shift (links und rechts), ... abfragen können als zweiten Tastendruck!?
  4. Autor dieses Themas

    f*********s

    ja, ich weiss, z.B. +(abc) oder so. Aber ich muss nicht shift dazu drücken...

    Gefunden hab ich auch nix, ich glaub auch es ist nicht möglich :(
  5. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.

    Zwei Buchstaben gleichzeitig drücken funktioniert nicht.
    Öffne mal den Editor und probier gleichzeitig ein A und ein B zu schreiben - Das geht auch nicht, wie denn auch? Was soll das eigentlich bringen?

    Du kannst nur Sondertasten (Ctrl, Shift, Alt) mit normalen Tasten kombinieren.
  6. Autor dieses Themas

    f*********s

    Aber im Computerspiel, für das ich ein macro schreiben will, gehen 2 Buchstaben gleichzeitig und müssen gedrückt werden um eine bestimmte Aktion durchzuführen.
  7. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.

    Ich bin mir sicher, dass das nicht geht.
    Das Spiel wertet das vielleicht so aus, wenn innerhalb von einem kurzem Zeitraum (unter einer Sekunde) zwei Buchstaben gedrückt werden (A und B), dann wird die Aktion ausgeführt. Das ist dann fast gleichzeitig.
  8. ich würd auch sagen das geht eher nich... glaube dafür ist delphi nich soo gut... spiele programmierst du ja auch nich grade mit delphi^^
  9. Das Teil dürfte über Key Up und Key Down Routinen laufen. Wenn in dem und dem Zeitraum ein Keydown der bedien Tasten ist, und sie erst dannach wieder ein KeyupEvent senden nimmt das Programm das als gleichzeitig an.
  10. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.


    Das Teil dürfte über Key Up und Key Down Routinen laufen. Wenn in dem und dem Zeitraum ein Keydown der bedien Tasten ist, und sie erst dannach wieder ein KeyupEvent senden nimmt das Programm das als gleichzeitig an.


    Ich revidiere meine Meinung, die ich weiter oben kundgetan habe!:biggrin:

    Hab' mal ein kleines Testprogramm geschrieben, da ich nun einen ähnlich Fall zu bewältigen habe. Gib eine Edit- und 2 Labelkomponenten auf ein Formular, und lege die entsprechenden Event-Routinen an:

    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if Key = 65 then
      begin
        Label1.Caption := 'a ist gedrückt';
        Label1.Color := RGB(00, $FF, 00);
      end;
      if Key = 89 then
      begin
        Label2.Caption := 'y ist gedrückt';
        Label2.Color := RGB(00, $FF, 00);
      end;
      Key := 0;
      Edit1.Clear;
    end;
    
    procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if Key = 65 then
      begin
        Label1.Caption := 'a ist nicht gedrückt';
        Label1.Color := RGB($FF, 00, 00);
      end;
      if Key = 89 then
      begin
        Label2.Caption := 'y ist nicht gedrückt';
        Label2.Color := RGB($FF, 00, 00);
      end;
    end;
    
    procedure TForm1.FormShow(Sender: TObject);
    begin
      Label1.Caption := 'a ist nicht gedrückt';
      Label1.Color := RGB($FF, 00, 00);
      Label2.Caption := 'y ist nicht gedrückt';
      Label2.Color := RGB($FF, 00, 00);
    end;


    Ich denke, das ist genau das, was du suchst!
  11. Autor dieses Themas

    f*********s

    Ähhh, nein?

    Ich will nicht abfragen, ob zwei keys gedrückt sind, ich will 2 keys drücken lassen mit programm ohne tastatur.

    Ich hab nie gesagt ich will ein game machen. Ich zitiere mich selbst nochmal:

    Aber im Computerspiel, für das ich ein macro schreiben will, gehen 2 Buchstaben gleichzeitig und müssen gedrückt werden um eine bestimmte Aktion durchzuführen.


    Im Computerspiel (das schon besteht und nicht von mir ist!!!) will ich ein macro (ich hofe ihr wisst was das ist. Das automatisiert Abläufe, zum Beispiel im MMORPG irgend einen job oder so) schreiben.
  12. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.


    Ich will nicht abfragen, ob zwei keys gedrückt sind, ich will 2 keys drücken lassen mit programm ohne tastatur.


    Tschuldigung, wollte dir nicht bei was helfen, was du gar nicht willst! ;)

    Aber mal umgekehrt: Hast du schon mal versucht, deine Tastendrücke nicht mittels Sendkey zu übermitteln, sondern indem du andere Messages sendest, wie eben auch WM_KEYDOWN, WM_KEYPRESS, WM_KEYUP?? Immerhin kann man ja so überprüfen, ob \"mehr als eine Taste\" gedrückt ist. Wieso soll das Drücken selbst nicht umgekehrt genau so funktionieren?
  13. Exakt.

    Deshalb habe ich dir ja geschrieben, wie meiner Meinung nach die Routinen funktionieren. Damit du dir ein Bild davon machen und einen Lösungsweg suche kannst.

    Botprogrammierung und ähnliches sind eben recht kompliziert, wenn man nicht weiß, wie die Programme arbeiten. Kannst ja versuchen irgendwo den Quelltext zu ziehen und die KeyRoutinen durchzublicken.
  14. soweit ich weis, geht das mit Pascal und Delphi nicht.
  15. Wie willst du das beurteilen, wenn du die Routinen nicht kennst?!

    Außedem knent meinse wissens nach keine Sprache eine vorgefertigte Routine, um zwe Tasten gleichzeitig zu drücken, alleine schon, weil keine heutige Tastatur es unterstützt!

    Wie gesagt ist es für soche Thematiken imemr wichtig das Backend dahinter zu kennen, woher soll man sonst wissen, wie man das Problem angehen muss?
  16. Also, wenn ich das Drücken von 2 Tasten simulieren will, dann mache ich das so:

    Keybd_Event(17,0,0,0); // Taste drücken   CTRL
    Keybd_Event(9,0,0,0); // Taste drücken    TAB
    Keybd_Event(9,0,KEYEVENTF_KEYUP,0); // Taste wieder loslassen
    Keybd_Event(17,0,KEYEVENTF_KEYUP,0); // Taste wieder loslassen


    damit schaltet mein Programm zuverlässig von einem Tab des ferngesteuerten Browsers zum nächsten.

    Hoffe, das hilft,
    limonero
  17. l*******r

    Eventuell hilft auch PostMessage noch, braucht soweit ich gerade weiß ein Handle und eine Message ;)

    Euer LDer
  18. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!