我想检测另一程序(delphi),如果最小化则将它恢复,如果是后台窗口,则将其激活,
结果同样的最小化后,DEPHI的TMainForm类主窗口句柄用IsIconic返回为FALSE,
而MSN 7.0主窗口却返回TRUE,郁闷中....
代码如下:
HWND hWndApp,hWndPopup;
if (hWndApp = FindWindow(hWndClassName,hWndWinName))
{
  hWndPopup = GetLastActivePopup(hWndApp);
  BringWindowToTop(hWndPopup);
  if ( IsIconic(hWndPopup) )
  { 
    ShowWindow(hWndPopup, SW_RESTORE); 
  }
  else
  { 
    SetForegroundWindow(hWndPopup); 
  }
}
还有其它办法获取窗口是否最小化吗?有谁碰到过.

解决方案 »

  1.   

    DEPHI的TMainForm类主窗口句柄用IsIconic返回为FALSE?
    你确认已经找到正确的主窗口句柄了吗?
      

  2.   

    WINDOWPLACEMENT wp;
    if(GetWindowPlacement(hWndPopup, &wp))
    {
       wp.showCmd // 这个成员指示了窗口当前的显示状态.
    }
      

  3.   

    多谢兄弟,测了一下,每次都是3,不变的,而SW_MINIMIZE却是6!
    应该还是宝兰的问题了!
      

  4.   

    Borland 的产品编译出来的工程,其主窗口是隐藏的,该窗口属于 TApplication,而你看到的主窗口其实是由 TApplication 的隐藏主窗口创建出来的子窗口,是属于 TForm 类的,你因该找到后者进行判断。
      

  5.   

    嗯,楼上兄弟说的不错,但我首先找到的就是隐藏窗口的子窗口,后来我用SPY++仔细看它在最小化与最大化之间有什么不同时发现,这种窗口在最小化时WS_VISIBLE属性不存在了,我猜测Borland是用不可见属性代替了最小化属性,不知道为什么这样做,我将我程序的IsIconic(hWndPopup) )改为IsWindowsVisible就可以检测到它是否最小化了,但另外一个问题是,将Dephi程序最大化之后,它的最小化按钮不起作用了,超级郁闷!
    希望高手再指点指点!