delphi7实现模拟键盘按键,比如按下v键,数字0,回车等
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi7实现模拟键盘按键,比如按下v键,数字0,回车等相关的知识,希望对你有一定的参考价值。
求全程序代码,我只是刚刚学会pascal,delphi还没有碰过
最好是带一个触发的(按下F11,才会按键)
感激不尽
hwndwindow:hwnd;
begin
hwndwindow:=findwindow(nil,'DELPHI技巧');//DELPHI技艺改成你要最大化的窗口标提.
if hwndwindow<>0 then//不等于0则是找到了这个窗体
postmessage(hwndwindow,WM_SYSCOMMAND,SC_MAXIMIZE,0);//用postmessage发送一条最大化消息(SC_MAXIMIZE)到这个窗体的句柄
//******************************************************
//另外postmessage(hwndwindow,wm_close,0,0);为关闭
//如果需要要自己的程序中使程序动态变最大化则用
form1.windowstate:=wsmaximized; //form1为你要最大化的窗口名!
//几个要用到的名词:
1.hwnd是句柄的意思,只有先得到了窗体的句柄才能控制它
2.findwindow是找窗体的意思
3.nil是空指针的意思
4.postmessage发送一条消息给一个已找到的窗口句柄.
对某一个窗口发送鼠标消息
SendMessage(Handle,WM_LBUTTONDBLCLK,0,0);
对系统发消息关闭程序
SendMessage(Handle, WM_CLOSE, 0, 0);
启动开始菜单
Sendmessage(Application.Handle,WM_SYSCOMMAND,SC_TASKLIST,0);
参考楼上说的使用 PostMessage 函数。PostMessage 函数确实可以模拟按键
参考资料:
http://gykthh.blog.163.com/blog/static/6453464201141211314831/ 参考技术A 你好,delphi关于按键有三种事件,最常用的就是keypress和keydown两个事件了
keypress就是按键的意思,一次只能接收一个按键, 而keydown就按下键的意思,可以实现组合按键
这是退格的代码。
keybd_event(VK_BACK, MapVirtualKey(VK_BACK, 0), 0, 0); //退格 参考技术B 使用 PostMessage 函数追问
unit Unit1;
interface
..............
end.
上面是form1窗口代码,哪里添加PostMessage 函数?
VB6模拟键盘事件
帮忙写一个程序:
程序启动5秒后用shell打开记事本,等待1秒后按下"a",再等待2秒后按下"b",之后停止操作并获取焦点。
要求:用keybd_event、操作完成后记事本上显示"ab"
这样
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Form_Load()
Sleep (5000) '等带5秒
Shell "notepad", 1
Sleep (1000) '等带1秒
Call keybd_event(65, 0, 0, 0) '模拟按下"a"键
Sleep (2000) '等带2秒
Call keybd_event(66, 0, 0, 0) '模拟按下"b"键
Me.Show
End Sub
然后再添加一个模块
在里面写上
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
如果你要一启动就要看见窗体可以添加一个timer控件 Interval 设置为5000
把上面的代码换成Private Sub Timer1_Timer()
Shell "notepad", 1
Sleep (1000) '等带1秒
Call keybd_event(65, 0, 0, 0) '模拟按下"a"键
Sleep (2000) '等带2秒
Call keybd_event(66, 0, 0, 0) '模拟按下"b"键
Me.Show
Timer1.Enabled = False
End Sub
其余不变 你可以自己灵活修改下
主要代码已经给你了
哪个shell 后面的1是正常显示窗体
vbHide 0 窗口被隐藏,且焦点会移到隐式窗口。
VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。
VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示。
VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。
VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。
VbMinimizedNoFocus 6 窗口会以一个图标来显示。而当前活动的的窗口仍然保持活动。 参考技术A 添加一个commandbutton,启动后点击command1激发事件
完整代码:
Option Explicit
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
Sleep (5000)
Shell "notepad", 1
Sleep (1000)
Call keybd_event(65, 0, 0, 0)
Sleep (2000)
Call keybd_event(66, 0, 0, 0)
Form1.SetFocus
End Sub 参考技术B Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
Shell "notepad", 1
Sleep (1000) '等待2秒
Call keybd_event(65, 0, 0, 0) '模拟按下"a"键
Sleep (2000) '等待2秒
Call keybd_event(66, 0, 0, 0) '模拟按下"b"键
Me.SetFocus
End Sub
然后再添加一个模块
在里面写上
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
以上是关于delphi7实现模拟键盘按键,比如按下v键,数字0,回车等的主要内容,如果未能解决你的问题,请参考以下文章