private static void accSess_OnStateChange(AccSession session, AccSessionState State, AccResult hr) { #region State switch (State) { case AccSessionState.AccSessionState_Offline: break; case AccSessionState.AccSessionState_Online: if (SuccessfulLogin != null) { SuccessfulLogin.Invoke(); LoadBuddyListGroups(); LoadBuddyListNames(); } break; default: break; } #endregion #region Errors switch (hr) { case AccResult.ACC_E_CONNECT_ERROR: case AccResult.ACC_E_INVALID_CLIENT_INFO: break; case AccResult.ACC_E_EXPIRED_KEY: case AccResult.ACC_E_RATE_LIMITED_KEY: case AccResult.ACC_E_SUSPENDED_KEY: case AccResult.ACC_E_INVALID_DATA: case AccResult.ACC_E_INVALID_KEY: case AccResult.ACC_E_INVALID_FINGERPRINT: if (UnknownSignonError != null) { UnknownSignonError.Invoke(); } break; //invalid SN or suspended SN case AccResult.ACC_E_SUSPENDED_IDENTITY: case AccResult.ACC_E_INVALID_IDENTITY: if (InvalidScreenName != null) { InvalidScreenName.Invoke(); } break; //invalid Password case AccResult.ACC_E_INVALID_PASSWORD: if (InvalidPassword != null) { InvalidPassword.Invoke(); } break; case AccResult.ACC_S: case AccResult.ACC_E: case AccResult.ACC_S_NO_CHANGE: case 0: break; default: System.Windows.Forms.MessageBox.Show(hr.ToString()); break; } #endregion }