关于SendMessage,(问题没结束呢,继续来高手啊); (20分)

  • 主题发起人 易名烦
  • 开始时间
留个箱子,给你
 
烂箱子: zoujinhe@changhong.com<br>薄菏: &nbsp; 我试了你和诸葛给我的代码,找不出光标所在的控件的HWND,怎么办?<br>诸葛: &nbsp; 没有Key_event他是Keybd_event.<br>
 
这是cndev上的一段代码,希望对你有用<br>var<br>&nbsp;_hWnd_Win,_hWnd_Edt: HWND;<br>&nbsp; nLen: Integer;<br>&nbsp; Buff: String;<br><br>begin<br>&nbsp; &nbsp; _hWnd_Win := FindWindow('TForm1','app1');<br>&nbsp; &nbsp; _hWnd_Edt := FindWindowEx(_hWnd_Win,0, 'TRichEdit',nil);<br>&nbsp; &nbsp; if _hWnd_Edt&lt;&gt;0 then<br>&nbsp; &nbsp; Begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Buff := GetText(_hWnd_Edt);<br>&nbsp; &nbsp; end;<br>&nbsp; &nbsp; memo1.Lines.Add(Buff);<br>end;<br>
 
查一下一个VB的仿真键盘,用了以下几个函数:<br><br>GetForegroundWindow //取得当前工作窗口<br>GetWindowThreadProcessId //取得窗口的进程ID<br>AttachThreadInput //将输入消息绑到进程中,注意退出时要去除绑定<br>GetFocus //取得焦点窗口<br>PostMessage //将消息传到目录控件<br><br>还不行就把VB的源码给你了
 
谢谢,但你给我我也不懂啊。我没学过VB。<br>看来我只有将窗口变成当前窗口,然后再KeyBd_event了,这样就不能干其它的事情了。<br>非常的不好。<br>
 
我用SendMessage(Edit1.Handle,WM_KeyDown,22,0);<br>Edit1在当前程序中,EDIT的值无反应,怪了。<br>剪贴板中有数据。<br>其中22是CTRL+V
 
发拉!找到句柄,模拟鼠标动作----- 按下、 弹起来!
 
再在的关键问题是怎么得到光标所在的子窗体的Handle?
 
得到光标所在的edit的Handle,也是我想要的,听课!<br><br>这年头怎么一听到这问题我的眼睛就发光
 
大家都想知道,来个人解答吧!
 
参考一下这个:<br>http://www.playicq.com/dispdoc.php?t=&amp;id=2155
 
谢谢,我下载看了。<br>这个是用的KeyBd_Event(),执行过程中屏幕不停晃。<br>如果做在我的程序中,操作者就不能做其它事情了,有点不符合使用都有的意愿。
 
你不用做得象他那样复杂。用两句话即可:<br>&nbsp; keybd_event(ord('A'), MapVirtualKey(ord('A'), 0), 0, 0);<br>&nbsp; keybd_event(ord('A'), MapVirtualKey(ord('A'), 0), KEYEVENTF_KEYUP, 0);
 
我不是只发一个“A”,只是用“A”来举个例子,实际应用中各种字符都有可能。<br>我想不打扰使用都做其它事情,想用SendMessage()
 
作个循环就是了。<br><br>s: string;<br><br>&nbsp; s := 'hello,world';<br>&nbsp; for i := 1 to length(s) do<br>&nbsp; begin<br>&nbsp; &nbsp; keybd_event(ord(s), MapVirtualKey(ord(s), 0), 0, 0);<br>&nbsp; &nbsp; keybd_event(ord(s), MapVirtualKey(ord(s), 0), KEYEVENTF_KEYUP, 0);<br>&nbsp; end;<br><br>可以作成一个函数方便调用。
 
WindowFromPoint可以得到任意标准类的句柄(当然前提是有Handle属性)<br>然后发送消息,最好用PostMessage,呵呵
 
可是这个需要鼠标指向该类啊,程序执行时用户在用鼠标做其他的事情。
 
别用WM_KEYDOWN消息,用WM_CHAR消息就行了。
 
有这么复杂吗? 我试试
 
不复杂,只要得到光标所在的EDIT的Handle,一切都搞定。<br>但是到目前为止,还是没得到。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
回复
0
查看
1K
天地弦
顶部