AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ausrufezeichen per SendInput

Ein Thema von DevilsCamp · begonnen am 5. Jul 2007 · letzter Beitrag vom 5. Jul 2007
Antwort Antwort
DevilsCamp
(Gast)

n/a Beiträge
 
#1

Ausrufezeichen per SendInput

  Alt 5. Jul 2007, 09:59
Hallo,

ich benutze folgenden Code:
Delphi-Quellcode:
procedure SimInput(Text: string; Delay: Word = 80);
var
  i : Integer;
  ind : Integer;
  Inp : array of TInput;
  s : string;
begin
  for i := 1 to Length(Text) do
  begin
    SetLength(Inp, 2);
    s := Text[i];
    ind := 0;

    if (s = AnsiUpperCase(s)) and (not (s[1] in ['0'..'9', #0..#32])) then
    begin
      SetLength(Inp, 4);
      Inp[0].Itype := INPUT_KEYBOARD;
      Inp[0].ki.wVk := VK_SHIFT;
      Inp[0].ki.dwFlags := 0;
      Inp[3].Itype := INPUT_KEYBOARD;
      Inp[3].ki.wVk := VK_SHIFT;
      Inp[3].ki.dwFlags := KEYEVENTF_KEYUP;
      ind := 1;
    end; // if (s = AnsiUpperCase(s))

    Inp[ind].Itype := INPUT_KEYBOARD;
    Inp[ind].ki.wVk := Ord(UpCase(s[1]));
    Inp[ind].ki.dwFlags := 0;
    ind := ind + 1;
    Inp[ind].Itype := INPUT_KEYBOARD;
    Inp[ind].ki.wVk := Ord(UpCase(s[1]));
    Inp[ind].ki.dwFlags := KEYEVENTF_KEYUP;
    SendInput(Length(Inp), Inp[0], SizeOf(TInput));
    Sleep(Delay);
  end; // for i := 1 to Length(Text)
end;
Dieser sendet einen angegebenen Text Zeichen für Zeichen an das gerade aktive Fenster.
Doch leider habe ich Probleme, wenn der Text ein Ausrufezeichen enthält.
Um genau zu sein:
Es wird nicht gesendet.

Bei einer Überprüfung mit OnKeyDown erhalte ich die Bestätigung, dass der Code der Taste, die gedrückt wurde, dem der 1 entspricht, zusammen mit einem bereits gedrücktem Shift.

Dem obigen Quellcode wird bei einem ! aber genau das auch simuliert: SHIFT drücken, 1 drücken, 1 loslassen, SHIFT loslassen.


Habe ich evtl. etwas übersehen?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Ausrufezeichen per SendInput

  Alt 5. Jul 2007, 10:25
deine Funktion kann generell nur mit Zeichen umgehen die bei der Programmierung vorgesehen waren (Zahlen Buchstaben). Verwende VKKeyScan um den richtigen Shiftstate etc. zu erhalten.
Oder verwende die fertige Lösung aus der Codelib: http://www.delphipraxis.net/internal...=562991#562991
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:31 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