请问这个sendmessage()为什么不起作用? (10分)

  • 主题发起人 主题发起人 foxgirl
  • 开始时间 开始时间
F

foxgirl

Unregistered / Unconfirmed
GUEST, unregistred user!
改一下,这样行不?<br>procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;<br>&nbsp; MousePos: TPoint; var Handled: Boolean);<br>var<br>handle:thandle;<br>begin<br>handle:=findwindow(nil,'TsTV(For W2K)');<br>if handle&lt;&gt;0 then<br>&nbsp; &nbsp;sendmessage(handle,vk_Right,0,0);//<br>end;<br>在这个电视程序中,可以在窗口上单击左右箭头键达到换台的目的,<br>上面的语句明明已经找到该电视窗口的句柄,为何对该句柄发送的消息电视窗口却不响应?
 
你跟踪执行到sendmessage(handle_son,WM_lbuttondown,0,0)了么?<br>理论是正确的!
 
if handle_father&lt;&gt;0 then<br>if handle_son&lt;&gt;0 then
 
对,此处不能用null,这不是C。Delphi中的NULL和C中的不同。
 
补充:<br>我用beep代替sendmessage(handle_son,WM_lbuttondown,0,0)时<br>beep语句执行了,有"砰"的一声,说明问题出在sendmessage身上。
 
恐怕不对,向按钮发消息是要用到按钮的句柄,而不是按钮所在窗口的句柄,这个消息最终只会传给窗口执行,而不是传给按钮执行,所以当然没有反应啦
 
我是先找到窗口句柄handle_father,然后再找到窗口中该按钮的句柄handle_son,然后向handle_son发的消息。
 
参考这吧,<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=2158025<br><br>找了窗体的句柄后,还需要找出按钮的句柄。
 
发个click试试<br>SendMessage(hButton,BM_CLICK,0,0);
 
hehe,这就是delphi程序员。都被宠坏了。
 
你是怎么找到按钮的句柄的,查看一下句柄是不是有效的
 
把当前焦点指到电视程序上,再执行SENdMESSAGE。
 
用postmessage试试
 
再说一句,若句柄是对的,发生的消息也是对的,但没有反应的话可能是被它屏蔽掉了这个消息!
 
电视程序中有很多部件,包括电视本身应用程序也算一个部件。<br>所有部件大部分都有自己的消息要处理,也就是有自己对应的wndproc。<br><br>你确定一定是'TsTV(For W2K)'这个窗体来处理方向键消息,进行换台吗???<br>
 
to 雪鹰:<br>对,就是左右方向键前后切换电视台节目,我就是想不用手去按左右键,而是用鼠标滚轮上去滚动来实现按左右键进行换台。
 
多人接受答案了。
 
后退
顶部