public void RefreshConnections() { if (!isConnected) { return; } var msg = new SAPEvent("getconnections"); msg = SAPhook.Instance.SendMessage(msg, TimeSpan.FromSeconds(PluginConfig.bridge_timeout_seconds)); if (msg != null) { isSapRunning = true; var sessions = new List <SAPSession>(); var data = msg.Get <SAPGetSessions>(); Connections = data.Connections; foreach (var con in Connections) { foreach (var ses in con.sessions) { sessions.Add(ses); } } Sessions = sessions.ToArray(); } else { isSapRunning = false; Sessions = new SAPSession[] { }; Connections = new SAPConnection[] { }; } }
private static SAPElement[] GetElementsWithuiSelector(SAPSession session, SAPSelector selector, IElement fromElement, int maxresults) { var result = new List <SAPElement>(); SAPElement _fromElement = fromElement as SAPElement; var root = new SAPSelectorItem(selector[0]); var sel = new SAPSelectorItem(selector[1]); var SystemName = root.SystemName; var id = sel.id; var msg = new SAPEvent("getitem"); msg.Set(new SAPEventElement() { Id = id, SystemName = SystemName }); msg = SAPhook.Instance.SendMessage(msg, TimeSpan.FromSeconds(5)); if (msg != null) { var ele = msg.Get <SAPEventElement>(); var Parent = new SAPElement(null, ele); result.Add(Parent); } return(result.ToArray()); }
private static SAPElement[] GetElementsWithuiSelector(SAPSession session, SAPSelector selector, IElement fromElement, int skip, int maxresults, bool FlatternGuiTree) { var result = new List <SAPElement>(); SAPElement _fromElement = fromElement as SAPElement; var root = new SAPSelectorItem(selector[0]); var sel = new SAPSelectorItem(selector[1]); var SystemName = root.SystemName; var id = sel.id; var path = sel.path; var msg = new SAPEvent("getitem"); msg.Set(new SAPEventElement() { Id = id, SystemName = SystemName, GetAllProperties = true, Path = path, Skip = skip, MaxItem = maxresults, Flat = FlatternGuiTree }); msg = SAPhook.Instance.SendMessage(msg, TimeSpan.FromSeconds(PluginConfig.bridge_timeout_seconds)); if (msg != null) { var ele = msg.Get <SAPEventElement>(); if (!string.IsNullOrEmpty(ele.Id)) { var _element = new SAPElement(null, ele); result.Add(_element); } } return(result.ToArray()); }
public void loadImageAsync(string Id, string SystemName, string statusBarText) { Task.Run(() => { StatusBarText = statusBarText; var msg = new SAPEvent("getitem"); msg.Set(new SAPEventElement() { Id = Id, SystemName = SystemName, GetAllProperties = false }); msg = SAPhook.Instance.SendMessage(msg, TimeSpan.FromSeconds(PluginConfig.bridge_timeout_seconds)); if (msg != null) { var ele = msg.Get <SAPEventElement>(); if (!string.IsNullOrEmpty(ele.Id)) { var _element = new SAPElement(null, ele); Image = _element.ImageString(); var message = _element.Properties.Where(x => x.Key == "Tooltip").FirstOrDefault(); if (message.Value != null && !string.IsNullOrEmpty(message.Value.Value)) { this.message = message.Value.Value; } var tooltip = _element.Properties.Where(x => x.Key == "DefaultTooltip").FirstOrDefault(); if (tooltip.Value != null && !string.IsNullOrEmpty(tooltip.Value.Value)) { this.tooltip = tooltip.Value.Value; } DisplayName = "Set " + Id.Substring(Id.LastIndexOf("/") + 1); } else { Log.Debug("loadImageAsync: Fail locating " + Id + " returned null id"); } } else { Log.Debug("loadImageAsync: Fail locating " + Id); } }); }
public void loadImageAsync(string Id, string SystemName, string ActionName, string statusBarText) { Task.Run(() => { StatusBarText = statusBarText; var msg = new SAPEvent("getitem"); msg.Set(new SAPEventElement() { Id = Id, SystemName = SystemName, GetAllProperties = false }); msg = SAPhook.Instance.SendMessage(msg, TimeSpan.FromSeconds(PluginConfig.bridge_timeout_seconds)); if (msg != null) { var ele = msg.Get <SAPEventElement>(); if (!string.IsNullOrEmpty(ele.Id)) { var _element = new SAPElement(null, ele); Image = _element.ImageString(); DisplayName = ActionName + " " + Id.Substring(Id.LastIndexOf("/") + 1); } } }); }
private void Pipeclient_ServerMessage(NamedPipeConnection <SAPEvent, SAPEvent> connection, SAPEvent message) { try { if (replyqueue.ContainsKey(message.messageid)) { if (System.Threading.Monitor.TryEnter(replyqueue, 1000)) { try { var e = replyqueue[message.messageid]; e.reply = message; if (e.reset != null) { e.reset.Set(); } replyqueue.Remove(message.messageid); return; } finally { System.Threading.Monitor.Exit(replyqueue); } } } } catch (Exception ex) { Log.Error(ex.ToString()); } try { if (message.action == "recorderevent") { var data = message.Get <SAPRecordingEvent>(); if (data != null) { Log.Debug(message.action + " " + data.ActionName + " " + data.Id); } else { Log.Debug(message.action); } var r = new RecordEvent(); r.SupportInput = false; r.SupportSelect = false; r.ClickHandled = true; if (data.Action == "InvokeMethod") { var skipMethods = PluginConfig.recording_skip_methods.ToLower().Split(','); if (skipMethods.Contains(data.ActionName.ToLower())) { return; } var a = new InvokeMethod(); a.Path = data.Id; a.ActionName = data.ActionName; a.SystemName = data.SystemName; if (data.Parameters != null) { a.Parameters = data.Parameters; for (var i = 0; i < data.Parameters.Length; i++) { var name = "param" + i.ToString(); } } a.loadImageAsync(data.Id, data.SystemName, data.ActionName, data.StatusBarText); r.a = new GetElementResult(a); } if (data.Action == "SetProperty") { var skipMethods = PluginConfig.recording_skip_properties.ToLower().Split(','); if (skipMethods.Contains(data.ActionName.ToLower())) { return; } var a = new SetProperty(); a.Path = data.Id; a.ActionName = data.ActionName; a.SystemName = data.SystemName; if (data.Parameters != null) { a.Parameters = data.Parameters; for (var i = 0; i < data.Parameters.Length; i++) { var name = "param" + i.ToString(); } } a.loadImageAsync(data.Id, data.SystemName, data.StatusBarText); r.a = new GetElementResult(a); } if (r != null) { Plugin.Instance.RaiseUserAction(r); } } else if (message.action == "mousedown") { LastEventElement = message.Get <SAPEventElement>(); LastElement = new SAPElement(null, LastEventElement); // Log.Output("SAP " + message.action + " " + LastElement.id); } else if (message.action == "mousemove") { LastEventElement = message.Get <SAPEventElement>(); LastElement = new SAPElement(null, LastEventElement); // Log.Output("SAP " + message.action + " " + LastElement.id + " " + LastElement.Path); } else { // Log.Output("SAP " + message.action); } } catch (Exception ex) { Log.Error(ex.ToString()); } }
private void Pipeclient_ServerMessage(NamedPipeConnection <SAPEvent, SAPEvent> connection, SAPEvent message) { try { if (replyqueue.ContainsKey(message.messageid)) { lock (replyqueue) { var e = replyqueue[message.messageid]; e.reply = message; if (e.reset != null) { e.reset.Set(); } replyqueue.Remove(message.messageid); return; } } } catch (Exception ex) { Log.Error(ex.ToString()); } try { if (message.action == "recorderevent") { var data = message.Get <SAPRecordingEvent>(); if (data != null) { Log.Debug(message.action + " " + data.ActionName + " " + data.Id); } else { Log.Debug(message.action); } var r = new RecordEvent(); r.SupportInput = false; r.SupportSelect = false; r.ClickHandled = true; if (data.Action == "InvokeMethod") { var a = new InvokeMethod(); a.Path = data.Id; a.ActionName = data.ActionName; a.SystemName = data.SystemName; if (data.Parameters != null) { a.Parameters = data.Parameters; for (var i = 0; i < data.Parameters.Length; i++) { var name = "param" + i.ToString(); } } r.a = new GetElementResult(a); } if (data.Action == "SetProperty") { var a = new SetProperty(); a.Path = data.Id; a.ActionName = data.ActionName; a.SystemName = data.SystemName; if (data.Parameters != null) { a.Parameters = data.Parameters; for (var i = 0; i < data.Parameters.Length; i++) { var name = "param" + i.ToString(); } } r.a = new GetElementResult(a); } if (r != null) { Plugin.Instance.RaiseUserAction(r); } } else if (message.action == "mousedown") { LastEventElement = message.Get <SAPEventElement>(); LastElement = new SAPElement(null, LastEventElement); Log.Output("SAP " + message.action + " " + LastElement.id); } else if (message.action == "mousemove") { LastEventElement = message.Get <SAPEventElement>(); LastElement = new SAPElement(null, LastEventElement); Log.Output("SAP " + message.action + " " + LastElement.id); } else { Log.Output("SAP " + message.action); } } catch (Exception ex) { Log.Error(ex.ToString()); } }