Einzelnen Beitrag anzeigen

delphi_newbie_123

Registriert seit: 14. Jan 2004
181 Beiträge
 
Delphi 5 Enterprise
 
#1

Tastendruck mit verzögerung

  Alt 30. Jan 2004, 18:08
hallo
ich brauche eine keydownfunktion die über mehrere sekunden anhält.
dass b die "r" taste unenterbrochen 7 sekunden gedrückt wird.
mit folgendem code komme ich net weiter, da keyu sofort nach dem drücken betätigt wird.
gibt es eine möglichkeit mein vorhaben zu mit der funktion zu realisieren oder gibts da vielelciht eine andere dafür?
Delphi-Quellcode:


procedure PostKeyEx32(key: Word; const shift: TShiftState; specialkey: Boolean);

type
  TShiftKeyInfo = record
    shift: Byte;
    vkey: Byte;
  end;
  byteset = set of 0..7;
const
  shiftkeys: array [1..3] of TShiftKeyInfo =
    ((shift: Ord(ssCtrl); vkey: VK_CONTROL),
    (shift: Ord(ssShift); vkey: VK_SHIFT),
    (shift: Ord(ssAlt); vkey: VK_MENU));
var
  flag: DWORD;
  bShift: ByteSet absolute shift;
  i: Integer;
begin
  for i := 1 to 3 do
  begin
    if shiftkeys[i].shift in bShift then
      keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0), 0, 0);
  end; { For } 
  if specialkey then
    flag := KEYEVENTF_EXTENDEDKEY
  else
    flag := 0;

  keybd_event(key, MapvirtualKey(key, 0), flag, 0);
  flag := flag or KEYEVENTF_KEYUP;
  keybd_event(key, MapvirtualKey(key, 0), flag, 0);

  for i := 3 downto 1 do
  begin
    if shiftkeys[i].shift in bShift then
      keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0),
        KEYEVENTF_KEYUP, 0);
  end; { For } 
end;




procedure TForm1.Button1Click(Sender: TObject);
begin
  


  PostKeyEx32(Ord('R'), [], False);
end;
danke euch schomal
  Mit Zitat antworten Zitat