如何在程序里修改任务栏“总在最前”的这一属性值?

解决方案 »

  1.   

    获得任务栏的句柄
    SetWindowPos();
    就可以了。
      

  2.   

    下面是禁止/隐藏整条任务栏
    procedure TForm1.Button1Click(Sender: TObject);
    Var Wnd: THandle;
    begin
      Wnd := FindWindow('Shell_TrayWnd', nil);
      //下面这一句实现隐藏
      if Wnd <> 0 then ShowWindow(Wnd, SW_HIDE);
      //下面这一句实现禁止
      if Wnd <> 0 then EnableWindow(Wnd, False);
    end;
    恢复正常必须用ShowWindow(Wnd, SW_SHOW) 和EnableWindow(Wnd, True)。
      

  3.   

    获得句柄后:
    SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE);
    那个窗口就始终在前面了。
    效果和form.style := fsStayOnTop一样。
    三次终于说清楚了。