type TForm1 = class(TForm) edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); const vk_o=79; vk_k=75; begin edit1.SetFocus; keybd_event (VK_O, 0, 0, 0); //press H keybd_event (VK_O, 0, KEYEVENTF_KEYUP, 0); // release H keybd_event (VK_K, 0, 0, 0); //press H keybd_event (VK_K, 0, KEYEVENTF_KEYUP, 0); // release H end;
end.//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////procedure TForm1.Button1Click(Sender: TObject); begin
//模拟输入 'abc' keybd_event(65,0,KEYEVENTF_EXTENDEDKEY or 0,0); keybd_event(65,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0); keybd_event(66,0,KEYEVENTF_EXTENDEDKEY or 0,0); keybd_event(66,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
keybd_event(67,0,KEYEVENTF_EXTENDEDKEY or 0,0); keybd_event(67,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
//模拟 alt + F 打开文件菜单 keybd_event(VK_MENU,0,KEYEVENTF_EXTENDEDKEY or 0,0); keybd_event(70,0,KEYEVENTF_EXTENDEDKEY or 0,0); keybd_event(70,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0); keybd_event(VK_MENU,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
//模拟输入 按 s 保存 keybd_event(83,0,KEYEVENTF_EXTENDEDKEY or 0,0); keybd_event(83,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0); end;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
rect:TRect;
x,y,lPara:Integer;
begin
GetWindowRect(Self.Handle,rect);//获得当前窗口的位置
x:=rect.Left+10; //当前窗口左上角x坐标加10
y:=rect.Top+10; //当前窗口左上角y坐标加10
lPara:=x+(y shl 16); //就算出lParam的值
//向当前窗口发送左键按下消息,相当于鼠标在相对窗口(10,10)的位置按下
PostMessage(Self.Handle,WM_LBUTTONDOWN,MK_LBUTTON,lpara);
end;
//相应鼠标按下事件
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
showmessage('WM_lbuttondown 在 ' + IntToStr(X) + ','+ IntToStr(y));
end;
end.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////简单点的可以用键盘/鼠标 事件
给你个键盘事件的例子:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
const
vk_o=79;
vk_k=75;
begin
edit1.SetFocus;
keybd_event (VK_O, 0, 0, 0); //press H
keybd_event (VK_O, 0, KEYEVENTF_KEYUP, 0); // release H
keybd_event (VK_K, 0, 0, 0); //press H
keybd_event (VK_K, 0, KEYEVENTF_KEYUP, 0); // release H
end;
end.//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////procedure TForm1.Button1Click(Sender: TObject);
begin
winexec('notepad',1);
//把记事本窗口激活
setforegroundwindow(findwindow(nil,'无标题-记事本'));
//模拟输入 'abc'
keybd_event(65,0,KEYEVENTF_EXTENDEDKEY or 0,0);
keybd_event(65,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
keybd_event(66,0,KEYEVENTF_EXTENDEDKEY or 0,0);
keybd_event(66,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
keybd_event(67,0,KEYEVENTF_EXTENDEDKEY or 0,0);
keybd_event(67,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
//模拟 alt + F 打开文件菜单
keybd_event(VK_MENU,0,KEYEVENTF_EXTENDEDKEY or 0,0);
keybd_event(70,0,KEYEVENTF_EXTENDEDKEY or 0,0);
keybd_event(70,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
keybd_event(VK_MENU,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
//模拟输入 按 s 保存
keybd_event(83,0,KEYEVENTF_EXTENDEDKEY or 0,0);
keybd_event(83,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
end;