> 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).