[ milnen @ 08.03.2007. 11:52 ] @
Zdravo,
Da li postoji nacin da iz mog programa u Delphiju generisem pritisak na odredjeni taster u nekom drugom programu koji je trenutno aktivan?
Treba da popunjavam neki web formular sa gomilom podataka, pa sam mislio da bi to moglo na ovaj nacin. (posaljem neka slova i brojeve, pa onda jedan TAB za prelazak na drugo polje itd)

Pozdrav,
Nenad
[ savkic @ 08.03.2007. 14:21 ] @
> Da li postoji nacin da iz mog programa u Delphiju generisem pritisak na odredjeni taster u nekom drugom programu koji je trenutno aktivan?

Pritisak na tastaturu možeš da simuliraš sa:

Code:


procedure SimulateKey(const AKey: Word; const AShift: TShiftState);
type
  TShiftKeyInfo = record
    Shift: Byte;
    VKey: Byte;
  end;
  ByteSet = set of 0..7;
const
  ShiftKeys: array[0..2] of TShiftKeyInfo = ((Shift: Ord(ssCtrl); VKey: VK_CONTROL), (Shift: Ord(ssShift); VKey: VK_SHIFT), (Shift: Ord(ssAlt); VKey: VK_MENU));
var
  bShift: ByteSet absolute AShift;
  i: Integer;
begin
  for i := 0 to High(ShiftKeys) do
    if ShiftKeys[i].Shift in bShift then
      keybd_event(ShiftKeys[i].VKey, MapVirtualKey(ShiftKeys[i].VKey, 0), 0, 0);

  keybd_event(AKey, MapVirtualKey(AKey, 0), 0, 0);
  keybd_event(AKey, MapVirtualKey(AKey, 0), KEYEVENTF_KEYUP, 0);

  for i := High(ShiftKeys) downto 0 do
    if ShiftKeys[i].Shift in bShift then
      keybd_event(ShiftKeys[i].VKey, MapVirtualKey(ShiftKeys[i].VKey, 0), KEYEVENTF_KEYUP, 0);
end;



Prvi parametar ti je virtuelni kod tastera, npr. za 'a' i 'A' je 65, AShift označava koji specijalni taster takođe treba simulirati (shift, alt, control).
[ milnen @ 08.03.2007. 14:45 ] @
Radi! Hvala puno!