如何(真正)将焦点集中到我的应用程序上?

del*_*les 0 delphi delphi-11-alexandria

我使用 Delphi 11 / Windows 11,并在需要时使用下面的代码将焦点强制到我的应用程序。

有时它会起作用,但有时 Windows 不会设置焦点并将我的应用程序 Windows 置于前面,而是只会在任务栏上“闪烁”我的应用程序图标。

我能做些什么来始终正确地完成任务吗?

procedure setFocus;
var hand: thandle;
begin
 hand := GetForegroundWindow;
    if hand <> application.MainForm.Handle then
    begin
      try
        setForeGround(application.MainForm.Handle);
        application.showmainform := true;
      finally
      end;
end;
Run Code Online (Sandbox Code Playgroud)

And*_*and 6

\n

[我]可以做些什么来始终正确地完成任务吗?

\n
\n

不。

\n

像 Windows 11 这样的现代操作系统不允许应用程序在没有用户明确请求的情况下将其自身带到前台。用户可以决定哪些应用程序显示在他或她自己的桌面上以及哪些应用程序位于前台。

\n

确实,这很好。当应用程序或对话框在用户没有预料到的情况下突然弹出时,这是非常烦人的。

\n

必读: 前台激活权限就像爱情:你不能\xe2\x80\x99偷走它,它必须是微软开发人员Raymond Chen给你的。

\n