【问题标题】:C# Visible windows but I don't want them to show up in Alt+Tab?C# 可见窗口,但我不希望它们显示在 Alt+Tab 中?
【发布时间】:2009-10-08 15:12:27
【问题描述】:

我有一个正在运行的程序,它是屏幕底部的一个自动收报机。所有这些功能都很好,但我注意到当我点击 Alt+Tab 时,我会在列表中看到它。我已经将 ShowInTaskbar 设置为 false,但我不希望我的程序出现在此列表中。是否有我忘记的属性或我可以进行 WinAPI 调用来阻止我的应用显示在 Windows Alt+Tab 中?

【问题讨论】:

    标签: c#


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      我还没有测试过代码,但是在谷歌上搜索了一下,我找到了this

      private static uint WS_POPUP            = 0x80000000;
      private static uint WS_EX_TOPMOST       = 0x00000008;
      private static uint WS_EX_TOOLWINDOW    = 0x00000080;
      
      protected override CreateParams CreateParams
      {
          get
          {
              CreateParams cp = base.CreateParams;
              cp.Style = unchecked((int) WS_POPUP);
              cp.ExStyle = (int) WS_EX_TOPMOST + (int) WS_EX_TOOLWINDOW;
      
              // Set location
              cp.X = 100;
              cp.Y = 100;
      
              return cp;
          }
      }
      

      【讨论】:

      • 这似乎不起作用。添加该代码后,当我调用 Show 方法时,它显示参数无效。问题似乎是当你设置 cp.ExStyle 时,我注释掉了那行并且程序运行了,即使窗口在 Alt+Tab 中仍然可见
      • 好无赖!对于那个很抱歉。 :(
      【解决方案3】:

      您必须将窗口样式设置为工具箱窗口,并将 ShowInTaskbar 设置为 false。只需将窗体的 BorderStyle 更改为 FixedToolWindow 或 SizeableToolWindow。详情请见FormBorderStyle

      【讨论】:

      • 这不起作用。我刚刚用 Windows Forms 和 WPF 试了一下,两次窗口仍然显示在 ALT+TAB 视图中。
      • 我假设您没有将“ShowInTaskbar”设置为 false?
      • OP 已经这样做了,因此我从未提及它,但为了清楚起见进行了更新。
      • 是的,我没有将 ShowInTaskbar 设置为 false。将其设置为false后,它确实有效。比调用 Windows API 更好的选择。
      • 除了它不起作用之外,我已经将我的 FormBorderStyle 设置为 None,所以不能采用这种方法。该窗口是使用图像定制设计的,实际上看起来像是父窗口的扩展(我也不想在 Alt+Tab 中显示)。
      猜你喜欢
      • 1970-01-01
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多