我用了如下方法:
SetForegroundWindow(h);//没反应!
sendmessage(HWND_BROADCAST,SW_SHOWNOACTIVATE,0,0);//也不行,我该怎么办呀!
我想把所有隐藏的窗口都显示出来!!

解决方案 »

  1.   

    呵呵,你那样做是不可以的,用SHOWWINDOW才可以!
    ShowWindow(Handle,SW_SHOW);//显示窗体
    ShowWindow(Handle,SW_HIDE);//隐藏窗体
    Handle是你得到的程序窗口句柄!
      

  2.   

    哦!是这样的,我不知道你的水平,SetForegroundWindow的意思是将一个后台的程序激活。你可以用EnumWindows等API枚举所有窗口,然后在枚举的过程中用ShowWindow显示,这样就可以把所有隐藏的窗体都显示出来了!
      

  3.   

    首先新建工程,然后添加一个ListBox和一个Button在implementation下面写
    function MyWindows(Hwnd:Longint;Wparam:longint):longint;stdcall;
    var WindowText:Pchar;
        TextAndHwnd:string;
    begin
      GetMem(WindowText,255);
      GetWindowText(Hwnd,WindowText,255);
      if Length(WindowText)<>0 then
        begin
          TextAndHwnd:=WindowText +'--'+inttostr(Hwnd);
          //ShowWindow(Hwnd,SW_SHOW);//该句为显示窗口
          Form1.ListBox1.Items.Add(TextAndHwnd);
        end;
      Result :=1;
    end;在Button点击事件中写
    EnumWindows(@MyWindows,0);这个时候运行,你就可以看到所有窗口了,然后把ShowWindow(Hwnd,SW_SHOW)前面的注释去掉,就可以显示所有窗口了,不过在运行之前保存你所有的操作,因为桌面上窗口太多了:)祝你成功!