点击托盘图标,怎么知道主窗体被其他应用程序窗体遮住了,如果被遮住就前端显示,否则就隐藏,像金山词霸一样,不胜感谢!

解决方案 »

  1.   

    判断自己窗体是不是活动窗体,不是活动窗体再用GetForegroundWindow得到前台窗体的句柄,再用GetWindowRect得到前台窗口的RECT,再判断自己窗口的RECT和前台窗体的有不有重合就可以了.
      

  2.   

    哦,好像看错了。。
    捕获这个消息:
      Application.OnDeactivate:=OnAppDeactivate;procedure TFormMain.OnAppDeactivate(Sender:TObject);
    begin
      Application.Hide;
    end;在trayicon的click事件中再用Application.Show
      

  3.   

    哦,好像看错了。。
    捕获这个消息:
      Application.OnDeactivate:=OnAppDeactivate;procedure TFormMain.OnAppDeactivate(Sender:TObject);
    begin
      Application.Hide;
    end;在trayicon的click事件中再用Application.Show
      

  4.   

    不用判断的,直接 SetForegroundWindow(yourhandle)就可以了
      

  5.   

    最小化时或改变窗口状态时 记录。
    点托盘图标时判断状态,如果在正常状态,则
    PostMessage(handel, WM_SYSCOMMAND, SC_RESTORE, 0); 或
    SetForegroundWindow(handel); 或
    ShowWindow(handel, SW_SHOW);
      

  6.   

    点击托盘图标时,把主窗口的句柄与SetActiveWindow()的返回值比较,不一样就前端显示,一样就隐
      

  7.   

    激活用
    User32.dll中的SwitchToThisWindow