delphi 开发的系统,运行后,怎么样可以把所有活动的窗口名添加到ComboBox1,不能重复?

解决方案 »

  1.   

    你的"活动的窗口"指的是什么,系统的?还是程序本身的(正常情况下,如果edit等不算的话,本身的活动的窗口应该只有一个)
      

  2.   

    就是,程序里,那些form1,form2,form3,等。那些窗体,创建后,用过后,没有退出,只是把它隐藏或最小化?
    我指的就是这些窗体的名字!
      

  3.   

    enoumwindow 好像有这么个函数,可能打错了。呵呵
      

  4.   

    你用的MDI Application?否则的话,最小化子窗口,主窗口是不能用的
    也就是我所说的,当前活动窗口只可能一个
    如果你的窗口是静态的,你可起直接在ComboBox1中将名字预先加入(你设计时就知道窗口名了)
    如果是动态的,正好我刚回过一贴
    http://topic.csdn.net/u/20100423/16/6888ad13-3fa9-4486-aeff-f9e626e78bc4.html
    第9#楼的,将窗口放入数组,用时做循环就可以了
    用EnumWindows也是可以的,它是遍列当前系统所有窗口,然后用GetWindowThreadProcessId判是否是当前进程的
      

  5.   

    就不是,MDI窗呀!所以现在,想找一个方法,把那些隐藏或最小化的窗体找出来,可以激活。
      

  6.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      i : Integer;
      cmp : TComponent;
    begin  for i := 0 to Application.ComponentCount - 1 do
      begin
        cmp := Application.Components[i];
        if cmp is TForm then
        begin
          if not TForm(cmp).Visible then
          begin
            ShowMessage(TForm(cmp).Name);
          end;
        end;
      end;  for i := 0 to Screen.FormCount - 1 do
      begin
        if not Screen.Forms[i].Visible then
        begin
          ShowMessage(Screen.Forms[i].Name);
        end;
      end;end;
    上面的代码把隐藏的窗体列举出来了
    判断是否最小化,同理。