internal static TASKDIALOGCONFIG Create()
        {
            var result = new TASKDIALOGCONFIG
            {
                cbSize                  = (uint)Marshal.SizeOf(typeof(TASKDIALOGCONFIG)),
                hwndParent              = IntPtr.Zero,
                hInstance               = IntPtr.Zero,
                flags                   = TASKDIALOG_FLAGS.TDF_ALLOW_DIALOG_CANCELLATION,
                commonButtons           = TASKDIALOG_COMMON_BUTTON_FLAGS.TDCBF_OK_BUTTON,
                mainIcon                = new TASKDIALOGCONFIG_ICON(0),
                buttonCount             = 0,
                buttons                 = IntPtr.Zero,
                defaultButtonIndex      = 0,
                radioButtonCount        = 0,
                radioButtons            = IntPtr.Zero,
                defaultRadioButtonIndex = 0,
                verificationText        = null,
                expandedInformation     = null,
                expandedControlText     = null,
                collapsedControlText    = null,
                footerIcon              = new TASKDIALOGCONFIG_ICON(0),
                footerText              = null,
                cxWidth                 = 0
            };

            return(result);
        }
 internal static extern void TaskDialogIndirect(
     [In] TASKDIALOGCONFIG pTaskConfig,
     [Out] out int pnButton,
     [Out] out int pnRadioButton,
     [MarshalAs(UnmanagedType.Bool)][Out] out bool pfVerificationFlagChecked);