0

パッケージをインストールするときにキャンセル ボタンを無効にしたい場合があります。Visual Studio インストーラーを使用しています。 ここに画像の説明を入力

コード側からこのキャンセルボタンを無効にしたい。

4

1 に答える 1

1

WIN32 API を使用したソリューションは次のとおりです。

  • Spy++ で Window のクラス名を取得し、関数 FindWindow で検索します
  • FindWindowEx でボタン 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 に答える