【问题标题】:How to avoid the focus on Delphi application?如何避免专注于 Delphi 应用程序?
【发布时间】:2010-03-16 11:19:45
【问题描述】:

我需要开发一个永远不会获得焦点的应用程序(Delphi),我使用 DLL 在第二个监视器上显示视频(我在 Torrys Delphi - Dr.SAGURA Media Player v.1.0 中找到)每次都获得焦点播放视频,如何避免这种情况?
我试试:

procedure TForm.WMActivate(var Msg: TWMActivate);  
begin  
  WA_ACTIVE :
  begin  
    Msg.Result := 0;// cancel focus  
  end;  
end;

不成功!

谢谢 让·艾莉森

【问题讨论】:

  • 正如所写,看起来它不应该编译。
  • 看起来他是想在那儿有一个案例陈述。 :-)

标签: delphi focus


【解决方案1】:
  • 在您的项目 DPR 中设置 Application.MainFormOnTaskBar := False。
  • 覆盖表单的 OnShow 和 OnActivate 事件并将其添加到这两个事件中:ShowWindow(Application.Handle, SW_HIDE);
  • 覆盖表单的 CreateParams 过程并将 WS_EX_NOACTIVATE 添加到 Params.ExStyle。

前两项从任务栏和 Alt+Tab 列表中隐藏应用程序,最后一项使其在显示和单击时无法获得焦点。

【讨论】:

  • 好的 Craig,感谢您通过解释解决了我的问题,您的解决方案非常有效,感谢您向我展示了写下我的疑问的方法 :-)
【解决方案2】:

无法聚焦的目的是什么?您想避免用户关闭/最小化/最大化窗口吗? 也许您的需求可以通过了解真正的问题来完成。

也许拥有服务而不是常规应用程序可以解决问题。

【讨论】:

  • 我使用该应用程序在第二台显示器上显示视频,安装在同一台计算机上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多