如何覆盖第三方应用程序上的关闭按钮以使其最小化?

Tam*_*man 4 c# c++ hook minimize

我想覆盖第三方应用程序上的关闭按钮,以便它导致应用程序最小化.我没有目标应用程序的源代码.

  • 我可以在C#中写这样的东西吗?或者我需要使用C++?
  • 我怎么写这种钩子?我是否需要运行进程或驱动程序/ DLL /服务是否足够?

据我研究,我认为我必须做这样的事情,但我不知道究竟是怎么回事:

WH_GETMESSAGE挂钩,用于覆盖WM_CLOSE以将Windows状态设置为WS_MINIMIZE.

Ach*_*rma 11

您可以在C++和C#中执行此操作.为此,您必须挂钩应用程序消息循环并将WM_CLOSE消息覆盖到WM_MINIMIZE.要挂钩任何正在运行的进程,您可以使用:

  1. 微软Detours(商业,如果我没记错的话,不是免费的)(http://research.microsoft.com/en-us/projects/detours/)

  2. EasyHook(LGPL下的开源)(http://easyhook.codeplex.com/)

我使用过EasyHook,我对结果非常满意.它为您提供了非常好的功能,例如启动附加挂钩的进程或将挂钩附加到已经运行的进程.此外,它还为您提供托管(C#)和本机挂钩库.我建议你看一下......

  • 是.您可以编写一个exe,它会将您的挂钩dll(托管或非托管)注入目标应用程序并启动它.EasyHook有完整的工作示例,可以帮助您入门:) (2认同)

Oha*_*der 5

对于C#,这可以通过一种非常简单的方式完成:

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (!realClose)
        {
            e.Cancel = true;
            this.WindowState = FormWindowState.Minimized;
        }
    }
Run Code Online (Sandbox Code Playgroud)

realClose当你想要关闭应用程序时,你设置为true的布尔值在哪里(例如,当用户按下关闭按钮时,而不是当他使用file -> exit或某些此类时)