请问:如何判断我的程序窗体,是不是目前得到焦点的窗体?(100分)

  • 主题发起人 主题发起人 Gec
  • 开始时间 开始时间
if GetForgroundWindow() = Handle then<br>...<br><br>--------<br>http://www.8421.org
 
不行<br>它俩任何时候都不相等<br>我用xp窗体构件
 
GetActiveWindow = handle
 
不知道为什么<br>GetActiveWindow = handle<br>GetActiveWindow = handle<br>GetActiveWindow = handle<br>这样连续执行3次,偶尔有1次成立<br>能不能通过appliation得到?
 
GetActiveWindow 老回传0
 
用 GetForgroundWindow() 来解决,如果你的窗体是当前窗体的话,返回的就是<br>你窗体的句柄,或者用自己窗体的handle属性来访问呀
 
我知道错在那里了<br>我是点1下trayicon后判断<br>getforgroundinwindow<br>可是有时候得到的是系统托盘图标的handle<br>我该如何判断我自己的程序有没有在用户桌面显示啊?
 
主form.visible
 
if form.visible=false then <br>showwindow(application.handle,2);<br>这样点trayicon根本没反映,如果<br>showwindow(application.handle,2);<br>才有反映<br>
 
对用form.visible属性,我以前的程序就是这么做的,没有任何问题
 
if form.visible=false then <br>showwindow(Form.handle,2);<br>
 
我试了一下,用 GetActiveWindow 是可以的,<br>在TIMER事件中:<br><br>procedure TForm1.Timer1Timer(Sender: TObject);<br>var<br>&nbsp; dskhnd : HWnd;<br>&nbsp; str : string;<br>begin<br>&nbsp; dskhnd := GetActiveWindow;<br>&nbsp; str := &nbsp;'DesktopWindow: '+ inttostr(dskhnd)+ ' &nbsp; Handle: ' +inttostr(Handle);<br>&nbsp; if dskhnd = Handle then<br>&nbsp; &nbsp; &nbsp;Caption := str + ' &nbsp;相等!!'<br>&nbsp; else Caption := str + ' &nbsp;不等!!!!!';<br>end;<br>
 
多人接受答案了。
 
后退
顶部