各位大侠看看这个简单的模拟键盘的问题!~帮帮小弟!(50分)

  • 主题发起人 主题发起人 huying
  • 开始时间 开始时间
H

huying

Unregistered / Unconfirmed
GUEST, unregistred user!
请教各位关于模拟键盘的简单操作!我是把执行文件打开后,原来是需要手动的操作.(填写路径之类).但是我现在想模拟键盘自动操作它,当然步骤是固定的(顺序是模拟16个&quot;下箭头&quot;--1个tab--填路径(发送str)--2个tab--填路径(发送str)--4个tab--1个return.应该怎么做啊!~我看了资料,好象是通过消息操作吧.用sendmessage吧!<br> <br>这样为什么不行呢? 我简单想对EXE操作个TAB都不成功!哪位大侠帮忙写下!<br><br>procedure TForm1.Button3Click(Sender: TObject);<br>var i:integer;<br>begin<br> &nbsp; &nbsp; shellexecute(handle,'open','c:/MSU.exe',nil,'',sw_shownormal);<br> &nbsp; &nbsp; sendmessage(Handle,WM_KEYDOWN, vk_tab, 0);<br>end;
 
sendmessage(Handle,WM_KEYDOWN, vk_tab, 0);<br>是对本程序发信息,不是向打开的'c:/MSU.exe'发信息
 
aHandle:=shellexecute(0,'open','c:/MSU.exe',nil,'',sw_shownormal); &nbsp; &nbsp; &nbsp;<br>Sendmessage(aHandle,WM_KEYDOWN,VK_SPACE,0);<br>Sendmessage(aHandle,WM_KEYUP,VK_SPACE,0);<br>这样才是一个按键
 
谢谢回复!但是楼上的大哥!~我用你的方法!~<br>procedure TForm1.Button3Click(Sender: TObject);<br>var i:integer;<br> &nbsp; &nbsp;aHandle:THandle;<br>begin<br> &nbsp; &nbsp; shellexecute(handle,'open','c:/MSU.exe',nil,'',sw_shownormal); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; aHandle:=shellexecute(0,'open','c:/MSU.exe',nil,'',sw_shownormal);<br> &nbsp; &nbsp; Sendmessage(aHandle,WM_KEYDOWN,VK_Tab,0);<br> &nbsp; &nbsp; Sendmessage(aHandle,WM_KEYUP,VK_Tab,0);<br>还是不能对EXE操作啊 ??
 
麻烦各位大侠帮忙写写~小弟急啊~
 
急也没有用,如果是向另外的程序发消息,查查相关钩子的资料吧.如果是本程序,那你写错了
 
各位大侠帮帮忙吧!~对于高手来说应该不难吧!小弟实在水平有限!~分不够小弟可以再加!
 
关注下!看你的描述应该是按你说的步骤控制MSU.EXE,呵呵,但是我也不会!帮你顶~
 
恩,对!是对MSU.EXE操作!各位高手觉得问题太简单懒得指教还是小弟没把问题说清楚呢?小弟在线等!
 
可不可以这样来做:<br>先打开你要被控制的应用程序。直接手工打开就行<br>再用<br> &nbsp; &nbsp;Keybd_event(VK_TAB,0,0,0);<br> &nbsp; &nbsp;Keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0); &nbsp; &nbsp; <br>发一个TAB键,如发一个“0”,则改VK_TAB为 48 (键的ASCII码)<br><br>给你编写的程序定义好一个热键(如按CTRL+F11执行相应的工作)<br>用GlobalFindAtom 、RegisterHotKey 、<br>procedure TForm1.WMhotkey(var msg:Tmessage) <br>就可以实现
 
楼上的大侠,小弟没有很明白你的意思!你是说我调用打开外部EXE用个热键实现,然后再用keybd_event来发送消息模拟键盘?这和我同时用一个按钮来是实现有什么区别呢?最好是一次完成打开外部程序和对其操作!现在小弟不清楚我想的操作应该怎么实现.看了些资料,SendMessage是要获得外部程序的句柄,好象还要焦点在外部程序上才能操作吧?这里小弟也不知道应该怎么写!用kenbd_event是不是就不需要知道这些呢.请赐教...谢谢大家了.小弟比较急..希望好心的高手能帮忙写写~
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
676
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部