AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi String erkennen und Tastendrücke simulieren
Thema durchsuchen
Ansicht
Themen-Optionen

String erkennen und Tastendrücke simulieren

Ein Thema von Innos · begonnen am 13. Jun 2007 · letzter Beitrag vom 13. Jun 2007
 
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: String erkennen und Tastendrücke simulieren

  Alt 13. Jun 2007, 15:08
ok, zum verständnis das ganze nochmal mit kommentaaren.
Delphi-Quellcode:
procedure EnterText(AText: String);
var lCount : Integer;
    lScanCode : Smallint;
    lWithAlt,
    lWithCtrl,
    lWithShift : Boolean;
begin
  //Alle bustaben des Strings durchgehen (schließlich soll jeder getippt werden)
  for lCount := 1 To Length(AText) Do
  begin
    //VkKeyScan gibt uns zurück welche Tasten auf der Tastatur gedrückt werden müssen
    //in den ersten 8 bit ist die eigentliche Taste und die anderen Bits sind gesetzt je nach dem welche
    //Tasten notwendig sind
    lScanCode := VkKeyScan(AText[lCount]);
    //Ermitteln ob Shift gedrückt wurde (wenn 9tes bit gesetzt ist)
    lWithShift := lScanCode and (1 shl 8) <> 0;
    //Ermitteln ob Strg gedrückt wurde (wenn 10tes bit gesetzt ist)
    lWithCtrl := lScanCode and (1 shl 9) <> 0;
    //Ermitteln ob Alt gedrückt wurde (wenn 11tes bit gesetzt ist)
    lWithAlt := lScanCode and (1 shl 10) <> 0;

    //wenn für das Zeichen die Shifttaste notwendig ist müssen wir diese drücken (nicht loslassen)
    if lWithShift then
      keybd_event(VK_SHIFT, 0, 0, 0);
    //wenn für das Zeichen die Strgtaste notwendig ist müssen wir diese drücken (nicht loslassen)
    if lWithCtrl then
      keybd_event(VK_CONTROL, 0, 0, 0);
    //wenn für das Zeichen die Alttaste notwendig ist müssen wir diese drücken (nicht loslassen)
    if lWithAlt then
      keybd_event(VK_MENU, 0, 0, 0);

    //Jetzt drücken wir die eigentliche Taste - bei A also a
    //die eigentliche Taste sind zwar nur die ersten 8 bit, allerdings müssen wir diese nicht
    //abspalten da keybd_event die restlichen bits vernachlässigt - besser wäre lScanCode auf
    //Byte zu casten damit die anderen Bits verschwinden
    keybd_event(lScanCode, 0, 0, 0);
    //Jetzt lassen wir die eigentliche Taste los - bei A also a
    keybd_event(lScanCode, 0, KEYEVENTF_KEYUP, 0);

    //Wenn wir für die Darstellung des Zeichens die Alttaste drücken mussten lassen wir diese jetzt wieder los
    if lWithAlt then
      keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
    //Wenn wir für die Darstellung des Zeichens die Strgtaste drücken mussten lassen wir diese jetzt wieder los
    if lWithCtrl then
      keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
    //Wenn wir für die Darstellung des Zeichens die Shifttaste drücken mussten lassen wir diese jetzt wieder los
    if lWithShift then
      keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
  end;
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 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