|
Forum
Grundkurs
»Introduktion
»Snabbguide
»Komponenter
»Händelser
»Strängar
»Räkna med Delphi »Egna
typer
»Selektion
»Iteration
»Menyer
»Funktioner
»Arraystrukturer
Tips & Tricks
»Nya tips
»Blandat
»Databaser
»Filer
»Forms
»Grafik
»Internet
»Komponenter
»Matematik
»Multimedia
»Objekt/ActiveX
»Skrivare
»Strängar
»System
»Mest lästa tips
Artiklar
»Delphi och ADO
»Bygga en DLL
»Skapa en enkel rapport
»Hantera registret
»Enheter, units
»Klassen TCanvas
»Använd LookUp Controls
Nya
tips
Lägg
till tips
Delphilänkar
Gästbok
|
|
|
|
|
|
SendKeys
|
Kategori: Blandat
Inlagt: 2003-03-05
Läst: 608
Inlagt av: Staffan Berg
|
|
Beskrivning |
|
Detta exempel demonstrerar hur du på programmatisk väg kan simulerar tangenttryckningar med hjälp av SendKeys.
|
|
Kod |
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; //PostKeyEx32
procedure TForm1.Button1Click(Sender: TObject);
begin
//Pressing the Left Windows Key
PostKeyEx32(VK_LWIN, [], FALSE);
//Pressing the letter D
PostKeyEx32(ORD('D'), [], FALSE);
//Pressing Ctrl-Alt-C
PostKeyEx32(ORD('C'), [ssctrl, ssAlt], FALSE);
end;
//or you can also try this simple example to send any amount of keystrokes at the same time.
procedure TForm1.Button1Click(Sender: TObject);
begin
//Pressing the A Key and showing it in the Edit1.Text
Edit1.SetFocus;
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event(ord('A'), 0, 0, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
//Presses the Left Window Key and starts the Run
keybd_event(VK_LWIN, 0, 0, 0);
keybd_event(ord('R'), 0, 0, 0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
end;
|
|
|