如何在程序中模拟键盘(20分)

  • 主题发起人 主题发起人 MicroZeng
  • 开始时间 开始时间
M

MicroZeng

Unregistered / Unconfirmed
GUEST, unregistred user!
1、对Memo1操作,Click A Button,其功能相当于在键盘上敲击
Backspace,Left,PageUp...
2、数字键盘的数字键和大键盘的数字键,Delphi在处理上有什么
区别:如OnKeyUp等事件上
请各位大虾帮忙!
 
关于1.
在Button的OnClick事件中添加如下代码:
Memo1.Perform(WM_Char, vk_back, 0);
该语句就相当与在Memo1中按BackSpace键,Left用Vk_Left;...
 
SendMessage不行吗?
 
把键插入HOOK队列:)
搞大了
 
2. 查virtual key编码:
大键盘数字键为VK_0...VK_9 (编码范围 48...57)
小键盘数字键为VK_NUMPAD0...VK_NUMPAD9 (编码范围 96...105)
两者是不同的
 
用getkeydtate()
 
To Another_eYes : 键值我已知道,但是不知道其用法。
对于控制键就不行了。
To RedForks :您提供的方法只对于箭头键有效,别的控制键好象不行。
有别的方法吗?
To CJ : 您说的HooK是一种最更本的解决方法,但是我不知道在挂上钩以后如把
处理后的信息送给Windows,如在做输入法时,接受到键盘的ABC就送一个
“上”字到编辑区。
清各位大虾继续帮忙,分数可以再加。
 
我有一个程序,可以模仿任何按健和鼠标,(用Hook的方法)
实际上就是<Delphi 3开发使用手册上>的,
我已e-mail给你,请查收!
 
多人接受答案了。
 
对于其它编辑键,可以使用WM_KEYDOWN消息:如
Memo1.Perform(WM_KeyDown, vk_Delete, 0);
就相当于按delete键。
对唐晓锋,Perform相当于SendMessage,但是不需要经过Windows消息循环。
 
1. 首先要设计你的鼠标与键盘的对应关系, 如:
LeftClick -- 保留(Change caret position)
RightClick -- 保留(popup menu)
LeftDblClick -- Backspace
RightDblClick -- Del
Shift+RightClick -- PgDn
Shift+LeftClick -- PgUp
模拟上下左右移动没有多大意义, 应该保留缺省的鼠标LeftClick, RightClick
2. 建立相应的Click,DblClick事件
3. 在事件中, 根据Shift的组合建立相应的键盘消息, Msg, wParam, lParam
4. 处理键盘消息Memo1.Perform(Msg, wParam, lParam);
 
后退
顶部