0

有时我想在安装我的包时禁用取消按钮,我正在使用 Visual Studio 安装程序。 在此处输入图像描述

我想从代码端禁用这个取消按钮。

4

1 回答 1

1

这是使用 WIN32 API 的解决方案:

  • 使用 Spy++ 获取 Window 的类名并使用函数 FindWindow 进行搜索
  • 通过 FindWindowEx 获取 Button hwnd
  • 通过 EnableWindow 禁用它

这是我的示例代码:

Win32 函数声明:

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

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle);

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EnableWindow(IntPtr hWnd, bool bEnable);

禁用按钮的代码:

IntPtr hwndWindow = FindWindow("MsiDialogCloseClass", "Installer");
IntPtr hwndButton = FindWindowEx((IntPtr)hwndWindow, IntPtr.Zero, "Button", "Cancel");

if (EnableWindow(hwndButton, false))
{
    //has been disabled
}

这是我的测试窗口:

在此处输入图像描述

于 2013-07-17T11:11:59.973 回答