procedure TForm1.Button1Click(Sender: TObject);
var
begin
{按下键}
{松开键}
end;
然后呢,我就兴致勃勃就试试发送按键到记事本,心想:我们都是按键盘输入的,模拟按键肯定行。。
结果,发送按键后,竟然没有收到任何消息。。。。汗。。。出什么问题了?我再检查下代码,发现没问题啊,再在网上看看,才知道问题原因。。。。原来记事本的确能接收按键信息,不过。。只是接受到按键信息,而不是字符信息。。。如果要记事本有字符显示,发送的应该是字符才对。。。汗。。。我恍然大悟。
真正的要这些写:
procedure TForm1.Button2Click(Sender: TObject);
var
begin
end;
由于接收字符是记事本的EDIT窗口。。所以还需要定位在那个EDIT才行。
终于能发送字符了。。。。呵呵,下面再提供一些另外的东西,需要日后有帮助。。
SendMessage(TreeView.Handle,TVM_SETBKCOLOR,0,RGB(255,0,0)); 设置TV背景颜色
SendMessage(Button.Handle,WM_LBUTTONDOWN,0,0); 鼠标左键按下
SendMessage(Button.Handle,WM_LBUTTONUP,0,0); 鼠标左键抬起
SendMessage(Edit.Handle,WM_SETTEXT,255,Integer(PChar('abc'))); 传递文本
SendMessage(Edit.Handle,WM_Char,Wparam('Q'),2); 传递字符
SendMessage(Button.Handle,BM_SETSTYLE,BS_RADIOBUTTON,1); 改变Button风格
SendMessage(ComboBox.Handle,CB_SETDropPEDWIDTH,300,0); 改变CBDownWidth
WM_CUT、WM_COPY和WM_PASTE 剪切,复制,粘帖
实现任意组合键
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), 0, 0);
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0);
SendMessageA
说明:
1.
2.
3.
4.
wMsg函数
★WM_Create
★WM_DESTROY
★WM_MOVE
★WM_SIZE
★WM_ACTIVATE
★WM_SETFOCUS
★WM_KILLFOCUS
★WM_ENABLE
★WM_SETREDRAW
★WM_SETTEXT
★WM_GETTEXT
★WM_GETTEXTLENGTH
★WM_PAINT
★WM_CLOSE
★WM_QUERYENDSESSION
★WM_QUIT
★WM_QUERYOPEN
★WM_ERASEBKGND
★WM_SYSCOLORCHANGE
★WM_QUERYENDSESSION
★WM_SHOWWINDOW
★WM_ACTIVATEAPP
★WM_FONTCHANGE
★WM_TIMECHANGE
★WM_CANCELMODE
★WM_SETCURSOR
★WM_ENDSESSION
★WM_MOUSEACTIVATE
★WM_CHILDACTIVATE
★WM_QUEUESYNC