如何在安装程序对话框中禁用“取消”按钮

时间:2013-07-17 06:57:34

标签: c# installer install custom-action

有时我想在安装我的软件包时禁用取消按钮,我正在使用visual studio安装程序。 enter image description here

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

1 个答案:

答案 0 :(得分: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
}

这是我的测试窗口:

enter image description here