使用SetForeGroundWindow后,原窗口的最小化按钮不起作用。

解决方案 »

  1.   

    我的也会,
    新建一个程序,只改project1里的代码
    program Project1;uses
      Forms,
      windows,
      Unit1 in 'Unit1.pas' {Form1};{$R *.res}var
      hdle : THandle;
    begin
      hdle := FindWindow(nil,'Form1');
      if hdle > 0 then
      begin
        if IsIconic(hdle) = false then
          ShowWindow(hdle,SW_RESTORE);
        SetForeGroundWindow(hdle);
      end
      else
      begin
        Application.Initialize;
        Application.CreateForm(TForm1, Form1);
        Application.Run;
      end;
    end.运行,保存,File菜单里CloseALl,运行生成的project1.exe,最小化,到双击一次project1.exe
    这时候显示出了project1.exe但是这时的最小化按钮却失效了
      

  2.   

    不关SetForeGroundWindow(hdle);的事是因为ShowWindow(hdle,SW_RESTORE);是Delphi的一个Bug,在VC,VB都没这个问题
    但你可以用ShowWindow来最小化。
      

  3.   

    if IsIconic(hdle) = false then
          ShowWindow(hdle,SW_SHOW);
      

  4.   

    改成SendMessage(hdle,WM_COMMAND,SW_RESTORE,0);后发现无法还原窗口,好怪啊,再改回
    SHOWWINDOW也不能还原窗口,不知道为什么