获得一Button的handle后,如何知道它是否Enabled,如果Enabled如何模拟Click这个Button(100分)

  • 主题发起人 主题发起人 HN-Huang
  • 开始时间 开始时间
是否Enabled:<br>&nbsp; IsWindowEnabled(handle)<br>至于Click,一定要用鼠标Click吗?那要先把鼠标移到Button上,再发WM_LBUTTONDBLCLK<br>消息就行啦。如果用不一定用鼠标,可以发WM_KEYDOWN。
 
to everyone <br>两种方法都可以实现(并且都要求实现:)<br>第一种,我不知道在程序中移动鼠标,并Click,还请大虾明示!<br>第二种,我用SendMessage(handle,wm_keydown,vk_return,0)没有反应!<br>用PostMessage(handle,wm_keydown,vk_return,0);结果是Click另外一个Button(该Button为焦点、即有虚线框的)<br>没有Click鼠标所在Button,Handle绝对没错,因为我获取了该Button的Caption。请大虾明示!<br><br>另外,问一下,因为我可以用FindWindow找到一个窗口,但是如何激活使之为当前窗口了?<br>应该有个Api吧!?<br>太菜了,还请各位大虾明示!
 
第一:移动鼠标用movemouse函数。<br>第二:先用setfocus函数设焦点啦。<br>第三:用SetActiveWindow函数啦。
 
var<br>&nbsp; tBtn: TButton;<br>begin<br>&nbsp; tBtn := TButton(FindControl(hWB));<br>&nbsp; if tBtn.Enabled then tBtn.Click;<br>end;<br><br><br>---------------------------------<br>http://www3.msstudio.net/xuqian
 
to philipliu<br>第一:移动鼠标用movemouse函数。没有这个函数?<br>第二:先用setfocus函数设焦点啦。与系统的名字相同,不知道你是怎么处理的。<br>我写了个<br>procedure mysetfocus(handle:longint);<br>begin<br>&nbsp; setfocus(handle);<br>end;<br>不知道有没有更好的方法。System.Assign一样,就可以区分开!<br>第三:用SetActiveWindow函数啦。<br>不知道为什么用过这个函数后,仍然是灰的,没有成为活动窗口!<br><br>to xuqian<br>var<br>&nbsp; tBtn: TButton;<br>begin<br>&nbsp; tBtn := TButton(FindControl(hWB));<br>&nbsp; if tBtn.Enabled then tBtn.Click;<br>end;<br>整个就是一个运行错误,不知道为什么运行到此处,就一个异常!<br>hwb应该指Button的handle吧!
 
第一:不好意思,弄错了,应是setcursorpos函数。<br>第二:用windows.setfocus就行了。<br>第三:用SetForegroundWindow函数吧。
 
不好意思,我想问一下如何得到BUTTON的句柄
 
多人接受答案了。
 
后退
顶部