请问怎样实现用鼠标点击激活程序的控件。(50分)

  • 主题发起人 主题发起人 luopz
  • 开始时间 开始时间
what is it meaning?
mouse_event?
 
you want to chang the component's size at runtime?
or you want to move the mouse point automatic?
 
一个锁死的控件,是不会对事件件出反应的,如何可对它的单击,而使它
复活?我不知道。
但可以用一个处于激活作态的控件,让它来模仿那种锁死状态,(也应是
它除了单击事件外不对其它事件作出反应,并且它的Color设为会色)。
在对它的单击后,改回来。
你看这样可以吧!
 
我的意思是激活其他应用程序并将鼠标移到其他程序的一定位置双击。
 
给那个程序发送WM_LBUTTONDBLCLK.
1. 先得到那个程序的handle, 然后
postmessage或者sendmessage(handle, WM_LBUTTONDBLCLK,
0, // 功能键alt, ctrl, shift
(posX and $ffff) // x坐标
+ (posY shl 16) ) // y 坐标
移动鼠标位置可以用SetCursorPos(x, y).
 
还是不太明白:-(
 
cytown: 我估计就是想打开一个程序.模拟鼠标操作那个程序.
(语言表达能力有待改善哦)
 
打开控件的事件板(在控件属性板旁),选CLIK事件。
 
我觉得Another_Yes说的可能有道理,首先必须获得你想激活的程序的窗口句柄,
然后用那个句并作为参数,给他发各种消息,否则你在一个程序中是无法控制别的
程序
 
Another_sYes: 你提到的只是将鼠标移到另一程序的某一位置,如果要在这位置
双击鼠标呢?
 
很简单, 可以用WindowFromPoint取得该鼠标位置下的window的handle(例如edit).
然后给这个hwnd发送WM_LBUTTONDBLCLK消息呗(需要将坐标转换成
相对于该window的client的, 可以用windows.ClientToScreen---注意是个API)
 
致Another_eYes:
最后一段请讲详细些!
thanks
 
呵呵, 原来要这样呀:-)
只要把设定的x/y(注意是屏幕坐标)告诉程序就可以了.
然后用setcursorpos移动鼠标到那个坐标上, 然后通过windowfrompoint得到坐标
所在的window的hwnd, 然后发送wm_lbuttondblclk消息到hwnd上, 就完成了.
最后eyes说的意思是说, 要特别指定某一个window, 可以用clienttoscreen得到该
window的屏幕坐标, 然后程序可以通过这个来发送鼠标位置.
你的明白:-)
 
接受答案了.
 
后退
顶部