代码之家  ›  专栏  ›  技术社区  ›  Tamara Wijsman

如何重写第三方应用程序上的关闭按钮,使其最小化?[关闭]

  •  4
  • Tamara Wijsman  · 技术社区  · 15 年前

    • 我能用C语言写这样的东西吗?或者我需要使用C++?
    • 我怎么写这种钩子?我需要一个正在运行的进程还是一个驱动程序/dll/服务就足够了?

    就我所做的研究而言,我认为我必须这样做,但我不知道具体情况:

    一个wh-getmessage钩子来覆盖wm-close,将windows状态设置为ws-minimize。

    3 回复  |  直到 12 年前
        1
  •  11
  •   Achintya Sharma    15 年前

    你可以用C++和C语言来做。要做到这一点,您必须钩住应用程序消息循环,并重写wm_close消息,使wm_最小化。要钩住正在运行的任何进程,可以使用:

    1. Microsoft迂回道(如果我记得正确的话,是商业的,不是免费的)(http://research.microsoft.com/en-us/projects/detours/)

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

    我用过easyhook,对结果很满意。它为您提供了非常好的功能,比如启动一个附加了钩子的进程,或者将钩子附加到已经运行的进程。此外,它还为您提供了托管(C)和本地挂钩库。 我建议你看看…

        2
  •  5
  •   Ohad Schneider    15 年前

    对于C这可以用非常简单的方式完成:

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

    在哪里? realClose 是一个布尔值,当您希望应用程序关闭时(例如,当用户按下关闭按钮时,而不是当用户使用 file -> exit 或者一些这样的)

        3
  •  -4
  •   Cheers and hth. - Alf    15 年前

    不要那样做。禁用关闭按钮。提供最小化按钮。

    推荐文章