2017-06-21 42 views
-1

我正在开发一个小应用程序窗口的Delphi应用程序。这个想法是,它始终保持在向用户提供信息并允许他按下按钮的所有其他窗口之上。我不想在应用程序的任务栏中显示应用程序的图标,因为它是一个小工具,不应该妨碍用户,我也希望用户能够将它放在任务栏上,如果他愿意的话。如何从任务栏中隐藏应用程序并始终保持窗口在其上

我已经得到它使用不显示任务栏图标下面从this question

procedure TForm1.CreateParams(var Params: TCreateParams); 
begin 
    inherited; 
    Params.ExStyle := Params.ExStyle and not WS_EX_APPWINDOW; 
    Params.WndParent := Application.Handle; 
end; 

而且我还发现this other question它涉及的形式,全屏幕是任务栏上方应用程序:

procedure TForm1.CreateParams(var Params: TCreateParams); 
begin 
    inherited; 
    Params.Style := WS_POPUP or WS_VISIBLE; //will overlay taskbar 
end; 

我没有能够做的是结婚两个。

回答

0

第三方应用程序的窗口无法始终是Windows组件上的“最顶层”窗口。例如,通过Windows组件,我指的是任务栏和任务管理器(始终打开顶部选项)。

正如所解释的hereherehere,有一个设置窗口在Z顺序和做Windows组件,似乎使用一个特殊的私有API这样做的最顶层窗口没有记录的API。

防止应用程序窗口隐藏在任务栏后面的一种方法(虽然不是很优雅)是设置一个计时器,使用SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NoMove or SWP_NoSize);SetForegroundWindow将其置顶。

相关问题