怎么模拟键盘输入

jkcsdn 2003-05-30 01:29:25
在Delphi中,用WinExec('notepad', sw_shownormal)打开记事本后,如何模拟键盘在记事本中自动输入信息,如输入字母“abc”等
...全文
239 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
goomoo 2003-05-31
  • 打赏
  • 举报
回复
结贴啊。
goomoo 2003-05-30
  • 打赏
  • 举报
回复
已成功:

procedure TForm1.Button1Click(Sender: TObject);
var
handle:THandle;
begin
winExec('notepad.exe',sw_show);
handle:=findwindow(nil,'未定标题 - 记事本');
form1.Caption:=intToStr(handle);
handle:=getWindow(handle,gw_child);
//send 'ABC' to 记事本
sendmessage(handle,wm_char,65,0);
sendmessage(handle,wm_char,66,0);
sendmessage(handle,wm_char,67,0);

end;
jkcsdn 2003-05-30
  • 打赏
  • 举报
回复
是需要向WinExec打开的外部文件中自动输入信息,不是在当前程序中自动输入,麻烦给出比较详细的过程或例子
rikky 2003-05-30
  • 打赏
  • 举报
回复
模拟按键函数
PostMessage(Edit1.Handle,WM_KEYDOWN,65,0);
意思是向Edit1中输入字符a

gasi 2003-05-30
  • 打赏
  • 举报
回复
UINT SendInput(
UINT nInputs, // count of input events
LPINPUT pInputs, // array of input events
int cbSize // size of structure
);
模拟系统输入
youou 2003-05-30
  • 打赏
  • 举报
回复
VK_ByteValue:=Byte(VK_Value);

if KeyBdState='键盘按下' then
KeyBD_Event(VK_ByteValue,0,0,0);

if KeyBdState='键盘抬起' then
KeyBD_Event(VK_ByteValue,0,KEYEVENTF_KEYUP,0);
xzhbaggio 2003-05-30
  • 打赏
  • 举报
回复
Delphi自己有个例子
在C:\Program Files\Delphi 7(或6)\Demos\ActiveX\OleAuto\Word8下
一看就明白了!
delphimo 2003-05-30
  • 打赏
  • 举报
回复
用一个记数器隔一点时间就写一次文件.
firetoucher 2003-05-30
  • 打赏
  • 举报
回复
1 用postmessage()和sendmessage()
2 用keybd_event
The keybd_event function synthesizes a keystroke. The system can use such a synthesized keystroke to generate a WM_KEYUP or WM_KEYDOWN message. The keyboard driver's interrupt handler calls the keybd_event function.

Windows NT/2000/XP: This function has been superseded. Use SendInput instead.

VOID keybd_event(
BYTE bVk, // virtual-key code
BYTE bScan, // hardware scan code
DWORD dwFlags, // function options
ULONG_PTR dwExtraInfo // additional keystroke data
);

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧