【问题标题】:How to prevent a window from opening from another application?如何防止从另一个应用程序打开窗口?
【发布时间】:2010-03-09 12:17:17
【问题描述】:

我将阻止从 iTunes 打开一个窗口。 我用谷歌搜索了很多,但找不到可以让我控制这些东西的 iTunes 库,所以我想我必须回到基础并在它打开后关闭它,但是如何?

我认为:

  • 每 500 毫秒打一个计时器
  • 检查窗口句柄是否打开
  • 关闭它

这可能吗? 如何在其他计算机上通过此应用程序识别窗口(我将放弃我的应用程序)?

语言是 C#.Net 2.0。

【问题讨论】:

    标签: c# .net itunes winforms


    【解决方案1】:

    是的,它是一个查找窗口并关闭它的选项。但是用户仍然会看到它。

    您可以使用 FindWindow 的 PInvoke 方法或使用 C# 方法(首选那些)

    using System.Diagnostics;
    Process[] processes = Process.GetProcessesByName("notepad");
    foreach (Process p in processes)
    {
        p.CloseMainWindow();
    }
    

    From here

    这只是为了关闭顶级应用程序,我不知道你是否可以找到带有进程的子窗口。 我知道您可以使用 PInvoke,参见示例 here

    [DllImport("user32.dll", SetLastError = true)]
    static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
    

    [DllImport("user32.dll", EntryPoint="FindWindow", SetLastError = true)]
    static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);
    

    【讨论】:

      【解决方案2】:

      当然有办法做到这一点,我之前使用的一种方法是基于 win32API,您需要查看以下内容:

      1. FindWindow
      2. SendMessage

      简而言之,您可以使用计时器,并在它触发时使用 FindWindow(使用窗口标题栏或应用程序“类”)来获取句柄,一旦您将 SendMessage 发送到至少一个窗口WM_CLOSE 或 WM_DESTROY

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-18
        • 2013-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多