private bool OnWindowCreated(byte[] newVal) { if (ElementWdwPtr.Read <int>() == 0) { return(false); } ElementIdPtr = SMProcess[SM17Natives.TElWind.ElementIdPtr]; CurrentConceptIdPtr = SMProcess[SM17Natives.Globals.CurrentConceptIdPtr]; CurrentRootIdPtr = SMProcess[SM17Natives.Globals.CurrentRootIdPtr]; CurrentHookIdPtr = SMProcess[SM17Natives.Globals.CurrentHookIdPtr]; ElementIdPtr.RegisterValueChangedEventHandler <int>(OnElementChangedInternal); LastElementId = CurrentElementId; // TODO: ??? This somehow gets delayed and causes all sorts of troubles //OnElementChanged?.Invoke(new SMDisplayedElementChangedArgs(SMA.Instance, // CurrentElement, // null)); OnAvailable?.Invoke(); return(true); }
private bool OnWindowCreated(byte[] newVal) { if (ElementWdwPtr.Read <int>() == 0) { return(false); } ElementIdPtr = SMProcess[Core.Natives.ElWind.ElementIdPtr]; LimitChildrenCountPtr = SMProcess[Core.Natives.Globals.LimitChildrenCountPtr]; CurrentConceptIdPtr = SMProcess[Core.Natives.Globals.CurrentConceptIdPtr]; CurrentConceptGroupIdPtr = SMProcess[Core.Natives.Globals.CurrentConceptGroupIdPtr]; CurrentRootIdPtr = SMProcess[Core.Natives.Globals.CurrentRootIdPtr]; CurrentHookIdPtr = SMProcess[Core.Natives.Globals.CurrentHookIdPtr]; LearningModePtr = SMProcess[Core.Natives.ElWind.LearningModePtr]; ElementIdPtr.RegisterValueChangedEventHandler <int>(OnElementChangedInternal); LastElementId = CurrentElementId; // TODO: ??? This somehow gets delayed and causes all sorts of troubles //OnElementChanged?.Invoke(new SMDisplayedElementChangedEventArgs(SMA.Instance, // CurrentElement, // null)); IsAvailable = true; OnAvailableInternal?.Invoke(); OnAvailable?.InvokeRemote( nameof(OnAvailable), h => OnAvailable -= h ); return(true); }
// // UI Automation Events /// <summary>Notification for window open event.</summary> /// <param name="elem"></param> /// <param name="eventId"></param> protected virtual void OnWindowOpened(AutomationElement elem, EventId eventId) { Window = elem; RegisterAwaitersEvents(Window); try { OnAvailable?.Invoke(new SMUIAvailabilityArgs(SMA.Instance, AvailabilityType.Opened)); } catch (Exception ex) { LogTo.Error(ex, "Error while signaling Window Available event"); } }
protected virtual void Available() { OnAvailable?.Invoke(); }