有没有一种方法可以用c#从另一个进程中删除关闭按钮?

本文关键字:另一个 进程 关闭按钮 删除 一种 方法 有没有 | 更新日期: 2023-09-27 18:16:04

我用c++尝试过,似乎需要将代码注入另一个进程以禁用其主窗口的关闭按钮。但我很好奇,因为我实际上需要它为一个。net程序,我可以灰色的主窗口的关闭按钮与c# ?

p。再说一次,我做这件事的过程不是我的。我可以找到它如下:

Process[] processes = Process.GetProcessesByName("Notepad");
foreach (Process p in processes)
{
    IntPtr pFoundWindow = p.MainWindowHandle;
    //Now how to disable it's close button?
}

有没有一种方法可以用c#从另一个进程中删除关闭按钮?

我想我明白了:

[DllImport("user32.dll")]
static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
[DllImport("user32.dll")]
static extern bool DeleteMenu(IntPtr hMenu, uint uPosition, uint uFlags);

const uint SC_CLOSE = 0xF060;
const uint MF_BYCOMMAND = 0x00000000;
Process[] processes = Process.GetProcessesByName("Notepad");
foreach (Process p in processes)
{
    IntPtr pFoundWindow = p.MainWindowHandle;
    IntPtr nSysMenu = GetSystemMenu(pFoundWindow, false);
    if (nSysMenu != IntPtr.Zero)
    {
        if (DeleteMenu(nSysMenu, SC_CLOSE, MF_BYCOMMAND))
        {
            //Done!
        }
    }
}