/// <summary>Returns a DialogResult indicating the user action.</summary> /// <param name="owner">The System.Windows.Forms.IWin32Window the dialog will display in front of.</param> /// <remarks> /// Sets the name, password and SaveChecked accessors to the state of the dialog as it was dismissed by the user. /// </remarks> private DialogResult ShowDialog(IWin32Window owner) { // set the api call parameters StringBuilder name = new StringBuilder(Credui.MaxUsernameLength); name.Append(this.Name); StringBuilder password = new StringBuilder(Credui.MaxPasswordLength); password.Append(this.Password); int saveChecked = Convert.ToInt32(this.SaveChecked); Credui.Info info = this.GetInfo(owner); Credui.Flags flags = this.GetFlags(); // make the api call Credui.ReturnCodes code = Credui.PromptForCredentials( ref info, this.Target, IntPtr.Zero, 0, name, Credui.MaxUsernameLength, password, Credui.MaxPasswordLength, ref saveChecked, flags ); // clean up resources if (this.Banner != null) { Gdi32.DeleteObject(info.HbmBanner); } // set the accessors from the api call parameters this.Name = name.ToString(); this.Password = password.ToString(); this.SaveChecked = Convert.ToBoolean(saveChecked); return(CredentialsDialog.GetDialogResult(code)); }
/// <summary>Returns the flags for dialog display options.</summary> private Credui.Flags GetFlags() { Credui.Flags flags = Credui.Flags.GenericCredentials; // grrrr... can't seem to get this to work... // if (incorrectPassword) flags = flags | CredUI.CREDUI_FLAGS.INCORRECT_PASSWORD; if (this.AlwaysDisplay) { flags = flags | Credui.Flags.AlwaysShowUi; } if (this.ExcludeCertificates) { flags = flags | Credui.Flags.ExcludeCertificates; } if (this.Persist) { flags = flags | Credui.Flags.ExpectConfirmation; if (this.SaveDisplayed) { flags = flags | Credui.Flags.ShowSaveCheckBox; } } else { flags = flags | Credui.Flags.DoNotPersist; } if (this.KeepName) { flags = flags | Credui.Flags.KeepUsername; } return(flags); }