新手的问题(30分)

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

hwave

Unregistered / Unconfirmed
GUEST, unregistred user!
请教:如何使光标经过的窗口激活?
 
在Form的onmousemove事件中写你想实现的语句.
 
如果想激活外部的窗口只能用鼠标钩子。
 
看看delphi帮助
 
onmousemove在form没有激活时不会发生。<br>可用application.onmessage处理。
 
procedure TForm1.MyOnMessage(var Msg: TMsg; var Handled: Boolean) ;<br>begin<br>&nbsp; if msg.message=512 then<br>&nbsp; begin<br>&nbsp; //do something <br>&nbsp; &nbsp;//msg.lParam低16位=x,高16位=以y<br>&nbsp; end;<br>end;<br><br>procedure TForm1.FormCreate(Sender: TObject);<br>begin<br>&nbsp; application.OnMessage:=MyOnMessage;<br>end;
 
在form的Onmousemove事件中加入form1.show;就可以了。
 
是想仿照X-Window的鼠标吧? ^_^<br><br>Windows 95的PowerToys扩展软件包中有一个XMouse, 功能相当的.<br>
 
同意IKnow,我用过xmouse,挺不错.<br><br>不过他好像是要自己用程序实现?
 
这个问题,我有两个目的:<br>1、正如是Iknow所说;<br>2、我编写了一个应用,在失去焦点的时候,隐藏在<br>左边,鼠标移动到screen的左边界时就弹出,但没有<br>输入焦点(没有激活)。我想弹出后,即可用键盘输入数据。<br><br>我的作法没有成功:<br>&nbsp; &nbsp; &nbsp;我首先取得鼠标经过的窗口句柄,<br>&nbsp; &nbsp; &nbsp;用SetActiveWindow()激活;<br>&nbsp; &nbsp; &nbsp;
 
用SetForegroundWindow代替SetActiveWindow()试一试
 
钱达智的笔记(96.7-96.10)的文章也介绍了<br>使用SetForegroundWindow(),我用了还是不行<br><br>//接受消息恢复<br>procedure TfrINPUT.MMessage(var Msg:Tmsg;Var handled:Boolean );<br>var<br>&nbsp;hww:HWND;<br>&nbsp;p1:TPOINT;<br>&nbsp;bb:integer;<br>begin<br>&nbsp; &nbsp;bb:= DefWindowProc(handle,WM_NCHITTEST,0,GetMessagePos); &nbsp;//判断鼠标接触了Form的边缘<br>&nbsp; &nbsp;if(Fcat=1)and(bb=18) then <br>&nbsp; &nbsp; &nbsp; &nbsp;begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; frINPUT.left:=fcleft; &nbsp; &nbsp;//恢复原始位置<br>&nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp;// GetCursorPos(p1);//取得鼠标的位置 <br>&nbsp; &nbsp; &nbsp; &nbsp;// Hww := WindowFromPoint(p1 );//取得鼠标所在窗口的句柄 <br><br>&nbsp; &nbsp; &nbsp; // hww:=FindWindow('TFrINPUT','AINPUT'); &nbsp; //取得窗口的句柄<br><br>&nbsp; &nbsp; &nbsp; // SetActiveWindow(hww); &nbsp; &nbsp; //测试不能激活<br>&nbsp; &nbsp; &nbsp; // SendMessage(Application.Handle,CM_ACTIVATE,0,0); &nbsp;//测试不能激活<br>&nbsp; &nbsp; &nbsp; // SetForegroundWindow(hww); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//还是不能激活<br>&nbsp; &nbsp; &nbsp; // SetForegroundWindow(Application.Handle); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//还是不能激活<br>&nbsp; &nbsp; &nbsp; &nbsp; SetForegroundWindow(frINPUT.Handle); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//还是不能激活 气死我了:-((( &nbsp;<br>&nbsp; <br> fcat:=0 &nbsp; &nbsp; &nbsp;//全局变量(表示已恢复)<br>&nbsp; &nbsp; &nbsp; &nbsp; end;<br>&nbsp; &nbsp; &nbsp; &nbsp;<br>end;<br><br>请大师号脉诊断,谢谢!!!!!!!!
 
如果只是想激活的话,setactivewindow应该是没问题的,是不是handle的问题?<br>用windowfrompoint和findwindow找窗口都不保险,既然是你自己的程序,用一个变<br>量记下handle吧。
 
不是handle的问题,我用spy监测过,没有问题。
 
接受答案了.
 
后退
顶部