FindWindow查找活动窗体的问题!(200分)

  • 主题发起人 主题发起人 coonlee
  • 开始时间 开始时间
C

coonlee

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; MyHWND: HWND;<br>begin<br>&nbsp; MyHWND := FindWindow('TForm2', 'Form2');<br>&nbsp; if (MyHWND &lt;&gt; 0) then<br>&nbsp; &nbsp; Application.CreateForm(TForm2, Form2);<br>&nbsp; &nbsp; Form2.Show;<br>其中,Form2已经设定为非自动创建窗体,但是每次在执行第一句的时候得到的MyHWND<br>不是0。这是为什么?我将第一个或第二个参数替换为nil,得到的结果也是相同的!<br>着急!在线等!!!<br>end;
 
Application有个方法可以看当前的Form列表,用他做比较好把
 
你要实现什么?是根据本窗口是否存在决定创建吗?如果是这样的话用<br><br>if not Assigned(form2) then<br>&nbsp; &nbsp; Application.CreateForm(TForm2, Form2);<br>&nbsp; &nbsp; Form2.Show;<br><br>在form2 的onclose事件中写入<br>form2 := nil;<br>
 
procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; MyHWND: HWND;<br>begin<br>&nbsp; MyHWND := FindWindow('TForm2', 'Form2');<br>&nbsp; if (MyHWND = 0) then<br>&nbsp; &nbsp; Application.CreateForm(TForm2, Form2);<br>&nbsp; &nbsp; Form2.Show
 
var handle_1:HWND;<br>begin<br>&nbsp; &nbsp; handle_1:=FindWindow(nil,'标题名');<br>&nbsp; &nbsp; if handle_1&lt;&gt;0 then  //存在<br>&nbsp; &nbsp; SendMessage(handle_1,WM_CLOSE,0,0);<br>&nbsp; &nbsp; close; &nbsp; &nbsp;<br>&nbsp; end;
 
To一少:<br>你说的方法我知道,但是我不想用Assigned方法。<br>用FIndWindow不能实现吗?<br><br>另To cwmdelpher:<br>实在不好意思,我一开始贴代码的时候弄错了,应该是等号不是不等号。即你的代码与我<br>的是一样的。可是这样做,即使在Form2没有被创建的情况下,MyHwnd也不是0。
 
To张无忌:<br>你说的方法我已经找到,用Application.FindComponent函数可以实现。但是用FindWindow<br>就不行了吗?钻牛角尖中。。。
 
说几句题外话,我对FindWindow这个函数向来就没有“好印象”,不论是窗口类,还是窗口<br>标题栏的文字,判断起来都有很大的不确定性,太有可能和别的窗口重复了。楼主就不要再<br>钻牛角尖了。[:D]
 
好吧,TNND,看来FindWindow不是头好牛。。。
 
后退
顶部