试了这个:
keybd_event(VK_SPACE,0,0,0);
sleep(5000);
keybd_event(VK_SPACE,0, KEYEVENTF_KEYUP,0);发现无论sleep多久, 都只能输入一个空格, 不能实现像物理键盘那样,按住空格键不放输入多个空格的效果,请问如何实现按住键盘不放输入多个字符的效果说明:1、需要输出到其它窗口;
2、一定要通过按住不放实现输出多个重复字符。
keybd_event(VK_SPACE,0,0,0);
sleep(5000);
keybd_event(VK_SPACE,0, KEYEVENTF_KEYUP,0);发现无论sleep多久, 都只能输入一个空格, 不能实现像物理键盘那样,按住空格键不放输入多个空格的效果,请问如何实现按住键盘不放输入多个字符的效果说明:1、需要输出到其它窗口;
2、一定要通过按住不放实现输出多个重复字符。
解决方案 »
- 今天网吧通宵了,散分。。。。
- ado删除记录的问题
- 进行查询或者批量处理数据时候,如何做等待画面?!
- 比较简单,关于listview怎么用的问题
- 如何判断一个变量所指向的内存空间是有效的(即没有被释放)?
- 无法更新定位行,一些值可能已最后一次读取后已更改,......UP 有分,大侠请进..
- 我是新手,有没有什么好的Delphi的网站,可以学习学习!
- 如何判断DataSource1.dataset中的一个字段是否为空,如是字符型????
- ADO的绊脚石(1)
- 一个值得讨论的问题,一个饶有趣味的问题,非计算机专业的人可能搞不清楚
- DBGridEH STFilter过滤条件问题(产生的Filter字附不完整)?
- delphi 类型转换
{
keybd_event(VK_SPACE,0,0,0);
sleep(10);
keybd_event(VK_SPACE,0, KEYEVENTF_KEYUP,0);
}
以下可以实现向记事本发送空格
var
h1,h2: THandle;
begin
h1 := FindWindow('Notepad',nil);
h2 := FindWindowEx(h1,0,'Edit',nil);
SendMessage(h2,WM_CHAR,32,0);
end;
只能先获得这个窗口的焦点然后激活,也不是什么特别好的办法
如果要达到这种效果还是通过int9中断做比较好……很多模拟器都是这么做的
Repeat
PostMessage(CBHwnd,WM_CHAR, VK_SPACE, 0)
intP:=intP+1;
Until intP>=100;
winIO也不行吗? 请问用int9中断怎么实现呢? USB键盘也可以吗?
keybd_event(VK_SPACE,0,0,0);
sleep(5000);
keybd_event(VK_SPACE,0, KEYEVENTF_KEYUP,0);
释放空格键停止计时。
先在自己窗体上试试
ontimer里面调用键盘事件
可以自己控制频率
所以你只运行一次keybd_event(VK_SPACE,0,0,0);当然只能产生一个空格,若想产生多少个空格必须调用多少次keybd_event(VK_SPACE,0,0,0);
其实如果能获取目标程序句柄,则可以发送WM_CHAR消息,其lKeyData参数中就可以指定按键重复次数