private void Abfrage() { try { String Requeststring = t_url.Text + "?"; foreach (DataRow i in Tabelle.Rows) { String Kanal = i[0].ToString(); i["Value"] = KarlsClient.Request(Kanal, 1000).TrimEnd('\0'); } //Save to file wenn angewählt String Antwortstring = ""; if (cb_toFile.Checked == true) { foreach (DataRow i in Tabelle.Rows) { Antwortstring = Antwortstring + i["Value"] + ";"; } Antwortstring = Antwortstring.TrimEnd(';'); SW.WriteLine(Antwortstring.Replace('.', ',').Replace('\r', ' ').Replace('\n', ' ')); } } catch (Exception e) { timer1.Stop(); MessageBox.Show("Fehler bei der Abfrage!\nBitte stoppen, dann alle Kanäle kontrollieren und erneut auf Start klicken!\n", "Fehler bei der Abfrage"); } }
private void button1_Click(object sender, EventArgs e) { try { btnRead.Text = client.Request(txtItem.Text, 1000); displayTextBox.Text = client.Request(txtItem.Text, 1000); } catch (Exception ex) { displayTextBox.Text = "Parse: " + ex.Message; } }
/// <summary> /// DDE Server에 Request /// </summary> /// <param name="ddeItem">Request Item</param> /// <returns>함수 실행 결과 (ProtocolResult 객체)</returns> public CommonStruct.ProtocolResult Request(string ddeItem) { CommonStruct.ProtocolResult result = new CommonStruct.ProtocolResult(); string receiveValue = string.Empty; stopWatch.Start(); try { receiveValue = ddeHandle.Request(ddeItem, 1); result.funcResult.isSuccess = true; } catch (Exception ex) { receiveValue = string.Empty; result.funcResult.isSuccess = false; result.funcResult.funcException = ex; } stopWatch.Stop(); result.funcResult.totalMilliseconds = stopWatch.ElapsedMilliseconds; result.receiveData = receiveValue; stopWatch.Reset(); return(result); }
/// <summary> /// 开始监控火狐浏览器 /// </summary> public List <WebSiteModel> MnitorFireFox() { try { string sUrl = string.Empty; string sTitle = string.Empty; DdeClient dde = new DdeClient("Firefox", "WWW_GetWindowInfo"); dde.Connect(); // 取得 URL 資訊 string sUrlInfo = dde.Request("URL", int.MaxValue); // DDE Client 進行連結 dde.Disconnect(); List <WebSiteModel> urls = new List <WebSiteModel>(); // 取得的 sUrlInfo 內容為 "網址","標題","" // 取出網址部分 if (sUrlInfo.Length > 0) { //sUrlInfo.Split(',').ToList<>(); sUrl = sUrlInfo.Split(',')[0].Trim(new char[] { '"' }); sTitle = sUrlInfo.Split(',')[1].ToString(); urls.Add(new WebSiteModel() { url = sUrl, title = sTitle }); } return(urls); } catch { return(null); } }
public void Test_Request_Before_Connect() { using var server = new TestServer(ServiceName); server.Register(); server.SetData(TopicName, ItemName, 1, Encoding.ASCII.GetBytes(TestData)); using var client = new DdeClient(ServiceName, TopicName); Assert.Throws<InvalidOperationException>(() => client.Request(ItemName, 1, Timeout)); }
public static void RunDdeClient() { // Wait for the user to press ENTER before proceding. Console.WriteLine("The Server sample must be running before the client can connect."); Console.WriteLine("Press ENTER to continue..."); Console.ReadLine(); try { // Create a client that connects to 'myapp|mytopic'. using (DdeClient client = new DdeClient("EXCEL", "[Book1.xlsx]2011-06-22")) { //[stock.xls]Sheet1!'r2c2' // Subscribe to the Disconnected event. This event will notify the application when a conversation has been terminated. client.Disconnected += OnDisconnected; // Connect to the server. It must be running or an exception will be thrown. client.Connect(); // Synchronous Execute Operation // client.Execute("mycommand", 60000); // Synchronous Poke Operation //client.Poke("myitem", DateTime.Now.ToString(), 60000); //client.Poke("A3", DateTime.Now.ToString(), 60000); // Syncronous Request Operation //Console.WriteLine("Request: " + client.Request("myitem", 60000)); Console.WriteLine("Request: " + client.Request("'r1c1'", 60000)); // Asynchronous Execute Operation //client.BeginExecute("mycommand", OnExecuteComplete, client); // Asynchronous Poke Operation //client.BeginPoke("myitem", Encoding.ASCII.GetBytes(DateTime.Now.ToString() + "\0"), 1, OnPokeComplete, client); client.BeginPoke("A2", Encoding.ASCII.GetBytes(DateTime.Now.ToString() + "\0"), 1, OnPokeComplete, client); // Asynchronous Request Operation //client.BeginRequest("myitem", 1, OnRequestComplete, client); client.BeginRequest("A4", 1, OnRequestComplete, client); // Advise Loop client.StartAdvise("myitem", 1, true, 60000); client.Advise += OnAdvise; // Wait for the user to press ENTER before proceding. Console.WriteLine("Press ENTER to quit..."); Console.ReadLine(); } } catch (Exception e) { Console.WriteLine(e.GetType().ToString()); Console.WriteLine(e.Message); Console.WriteLine(e.InnerException); Console.WriteLine("Press ENTER to quit..."); Console.ReadLine(); } }
public void Test_Request_Overload_2() { using var server = new TestServer(ServiceName); server.Register(); server.SetData(TopicName, ItemName, 1, Encoding.ASCII.GetBytes(TestData)); using var client = new DdeClient(ServiceName, TopicName); client.Connect(); var data = client.Request(ItemName, Timeout); Assert.AreEqual(TestData, data); }
public void Test_Request_After_Dispose() { using var server = new TestServer(ServiceName); server.Register(); server.SetData(TopicName, ItemName, 1, Encoding.ASCII.GetBytes(TestData)); using var client = new DdeClient(ServiceName, TopicName); client.Connect(); client.Dispose(); Assert.Throws<ObjectDisposedException>(() => client.Request(ItemName, 1, Timeout)); }
public static string GetFirefoxURL() { DdeClient dde = new DdeClient("Firefox", "WWW_GetWindowInfo"); dde.Connect(); string url = dde.Request("URL", int.MaxValue); dde.Disconnect(); return(url); }
internal string Request(string item) { string result = c.Request(item, 1000); // TOS sends all values with a null termination character which has to be removed. if (null != result) { result = result.Replace("\0", string.Empty); } return(result); }
public void Test_Request_Before_Connect() { using (TestServer server = new TestServer(ServiceName)) { server.Register(); server.SetData(TopicName, ItemName, 1, Encoding.ASCII.GetBytes(TestData)); using (DdeClient client = new DdeClient(ServiceName, TopicName)) { byte[] data = client.Request(ItemName, 1, Timeout); } } }
public void Test_Request_Overload_1() { using (TestServer server = new TestServer(ServiceName)) { server.Register(); server.SetData(TopicName, ItemName, 1, Encoding.ASCII.GetBytes(TestData)); using (DdeClient client = new DdeClient(ServiceName, TopicName)) { client.Connect(); byte[] data = client.Request(ItemName, 1, Timeout); Assert.AreEqual(TestData, Encoding.ASCII.GetString(data)); } } }
private void btnStart_Click(object sender, EventArgs e) { CreateDatabase(txtCode.Text); Start(); Byte[] b = client.Request("銘柄名称", 1, 6000); _name = Encoding.Default.GetString(b); this.Text = _name; btnStart.Enabled = false; btnStop.Enabled = true; timer1.Enabled = true; }
public PluginResult OnTriggered(PluginTriggerEventArgs e) { DdeClient dde = new DdeClient("Opera", "WWW_GetWindowInfo"); dde.Connect(); string result = dde.Request("URL", 1000); dde.Disconnect(); // Result string is in the format "url", "Opera - [title]", ... var parts = result.Trim('"').Split(new string[] { "\",\"" }, StringSplitOptions.None); string url = parts[0].Replace("\\\"", "\""); string name = Regex.Match(parts[1], @"Opera - \[(.*?)\]").Groups[1].Value.Replace("\\\"", "\""); return(PluginResult.FromUrl(url, name)); }
private static string GetURL(IntPtr intPtr, string programName, out string url) { string temp = null; if (programName.Equals("firefox")) { DdeClient dde = new DdeClient("Firefox", "WWW_GetWindowInfo"); dde.Connect(); string url1 = dde.Request("URL", int.MaxValue); dde.Disconnect(); temp = url1; } url = temp; return(temp); }
public PluginResult OnTriggered(PluginTriggerEventArgs e) { DdeClient dde = new DdeClient("Firefox", "WWW_GetWindowInfo"); dde.Connect(); string result = dde.Request("URL", 1000); dde.Disconnect(); // Result string is in the format "uri", "title", ... var parts = result.Trim('"').Split(new string[] { "\",\"" }, StringSplitOptions.None); string url = parts[0].Replace("\\\"", "\""); string name = parts[1].Replace("\\\"", "\""); return(PluginResult.FromUrl(url, name)); }
private string GetBrowserURL(string browser) { try { DdeClient dde = new DdeClient(browser, "WWW_GetWindowInfo"); dde.Connect(); string url = dde.Request("URL", int.MaxValue); string[] text = url.Split(new string[] { "\",\"" }, StringSplitOptions.RemoveEmptyEntries); dde.Disconnect(); return(text[0].Substring(1)); } catch { return(null); } }
public void getURLfirefox() { try { DdeClient dde = new DdeClient("firefox", "WWW_GetWindowInfo"); dde.Connect(); string url = dde.Request("URL", int.MaxValue); string[] urls = url.Split(new string[] { ",", "\"" }, StringSplitOptions.RemoveEmptyEntries); dde.Disconnect(); listaStron.Add("[firefox]"); listaStron.Add("URL: " + urls[0]); listaStron.Add("Title: " + urls[1]); } catch { } }
public decimal Request(string item) { try { if (client.IsConnected == true) { string result = client.Request(item, 60000); return(Convert.ToDecimal(result)); } else { return(decimal.Zero); } } catch { return(decimal.Zero); } }
public void Advise(string TagName) { if (TagNames.Contains(TagName)) { return; } //ToDo: hier Prüfen, ob TagName gültig ist. TagNames.Add(TagName); try { // Create a client that connects to 'myapp|mytopic'. using (DdeClient dde_client = new DdeClient(DdeServerName, DdeTopic)) { // Subscribe to the Disconnected event. This event will notify the application when a conversation has been terminated. dde_client.Disconnected += OnDisconnected; // Connect to the server. It must be running or an exception will be thrown. dde_client.Connect(); //Lese den Wert initial von DDE Server: string TagValue = dde_client.Request(TagName, 60000); UdpSend(TagName, TagValue); //Lese den Wert von DDE Server neu ein bei Wertänderung. // Advise Loop. dde_client.StartAdvise(TagName, 1, true, 60000); dde_client.Advise += OnAdvise2; while (TagNames.Contains(TagName)) { System.Threading.Thread.Sleep(DdeLoopTime); } } } catch (Exception e) { Console.WriteLine(e.GetType().ToString() + "\r\n" + e.Message + "\r\n" + e.StackTrace); } }
private static string Request(string topic, string item, DdeClient client) { string name = null; try { DateTime start = DateTime.Now; // 楽天RSSサービスに接続する if (client.IsConnected == false) { client.Connect(); } // リクエストを出して値を取得する // 第1引数は取得したいアイテム名 // 第2引数は内部的にDdeClientTransaction()をコールしており // wFmtの[CF_TEXT(文字列)]と等価である1を指定する // 第3引数はタイムアウトする時間をミリ秒単位で指定する DateTime start2 = DateTime.Now; byte[] data = client.Request(item, 1, 500); name = Encoding.Default.GetString(data).Replace("\0", ""); } catch (NDde.DdeException ddex) { throw ddex; } catch (Exception ex) { throw ex; } return(name); }
override public void add(BooleanItem bi) { Console.WriteLine("Füge hinzu:" + bi.ToString() + " connected=" + connected); pool.Add(bi); if (connected) { ps.StartAdvise("%qx" + bi.byteAdr + "." + bi.bitAdr, 1, true, true, 60000, this); //ps.BeginRequest("%qx" + bi.byteAdr + "." + bi.bitAdr, 1, OnRequestComplete, ps); String s = ps.Request("%qx" + bi.byteAdr + "." + bi.bitAdr, 60000); //Console.WriteLine("Request=" + s); //Console.WriteLine("%qx" + bi.byteAdr + "." + bi.bitAdr + "=" + s); if (s.StartsWith("1")) { bi.setState(true); } else { bi.setState(false); } //Console.WriteLine("state)" + bi.getState()); } else { Console.WriteLine("** Achtung Eingang hinzugefügt aber noch nicht verbunden !"); } if (listener != null) { listener.outputChanged(bi); } else { Console.WriteLine("** Achtung Listener ist NULL!"); } }
override public Boolean connect() { try { Console.WriteLine("DDE try Connect"); ps.Connect(); ps.StartAdvise(outMarke, 1, true, false, 60000, this); /* * ThreadStart del; * del = new ThreadStart(run); * runner = new Thread(del); * runner.Start(); */ inValue = 0; outValue = 0; ps.Advise += OnAdvise; String s = ps.Request(outMarke, 60000); inValue = Int32.Parse(s); Console.WriteLine("inValue festgelegt auf" + inValue); connected = true; if (listener != null) { listener.stateChanged("Connected"); } return(true); } catch (Exception ex) { Console.WriteLine("Connect Failed"); if (listener != null) { listener.stateChanged("Connection failed"); } connected = false; return(false); } }
/** 新增項目(Item), 並取得該項目的值(Value) * 1. 呼叫 DdeClient 的 "Request()" & "StartAdvise" 取得該 Item 的值 * 2. 利用 service|topic!item 字串為 key * 2.1 ht_gdv(HashTable) -> (key, DataGridViewRow) * 3. 在 dgItemInfo(DataGridView)新增一列, 顯示項目相關資訊 * * <param name="dc"> "新增項目" 按鈕事件所在列對應的 DdeClient * <param name="item"> "新增項目" 名稱(Name) */ private void AddItem(DdeClient dc, string item) { try { string key = dc.Service + "|" + dc.Topic + "!" + item; Item it = new Item(); it.item = item; it.value = ""; try { //Synchronous Request Operation, 用以取得第一次呼叫的值 //eLeader, 康和 並未支援同步呼叫; yeswin/hts 則有支援 byte[] data = dc.Request(item, 1, 60000); int codepage = Encoding.Default.CodePage; //取得編碼的 codpage. 中文 Default: 950 string value = Encoding.GetEncoding(codepage).GetString(data, 0, data.Length); //it.value = Encoding.ASCII.GetString(data); it.value = value; } catch (Exception) { ; //忽略該錯誤 } //Add a Row int idx = dgItemInfo.Rows.Add(dc.Service, dc.Topic, item, it.value); //保存 key 與 所在新增 Row ht_gdv.Add(key, dgItemInfo.Rows[idx]); // Advise Loop dc.StartAdvise(item, 1, true, 60000); } catch (Exception thrown) { MessageBox.Show("無法新增項目: \n" + thrown.Message); } }
/// <summary> /// Возвращет название активной вкладки браузера /// </summary> /// <param name="browser">название браузера</param> /// <param name="ptr"></param> /// <returns>Название вкладки</returns> public static string GetBrowserURL(string browser, IntPtr ptr = new IntPtr()) { if (browser == "firefox") { try { DdeClient dde = new DdeClient(browser, "WWW_GetWindowInfo"); dde.Connect(); string url = dde.Request("URL", int.MaxValue); string[] text = url.Split(new string[] { "\",\"" }, StringSplitOptions.RemoveEmptyEntries); dde.Disconnect(); return(text[0].Substring(1)); } catch { return(null); } } else if (browser == "chrome") { { string ret = ""; AutomationElement elm = AutomationElement.FromHandle(ptr); AutomationElement elmUrlBar = null; try { var elm1 = elm.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "Google Chrome")); if (elm1 == null) { return(null); } var elm2 = TreeWalker.RawViewWalker.GetLastChild(elm1); // I don't know a Condition for this for finding var elm3 = elm2.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "")); var elm4 = TreeWalker.RawViewWalker.GetNextSibling(elm3); // I don't know a Condition for this for finding var elm5 = elm4.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.ToolBar)); var elm6 = elm5.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "")); elmUrlBar = elm6.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit)); } catch { return(null); } AutomationPattern[] patterns = elmUrlBar.GetSupportedPatterns(); if (patterns.Length == 1) { try { ret = ((ValuePattern)elmUrlBar.GetCurrentPattern(patterns[0])).Current.Value; //return ret; } catch { } if (ret != "") { if (Regex.IsMatch(ret, @"^(https:\/\/)?[a-zA-Z0-9\-\.]+(\.[a-zA-Z]{2,4}).*$")) { if (!ret.StartsWith("http")) { ret = "http://" + ret; } return(ret); } } } return(null); } } else { return(null); } }
public async Task <object> GetInvoker(IDictionary <string, object> input) { var services = (IDictionary <string, object>)input["services"]; var callbacks = (IDictionary <string, object>)input["callbacks"]; var clients = new List <DdeClient>(); foreach (string service in services.Keys) { var topics = (IDictionary <string, object>)services[service]; foreach (string topic in topics.Keys) { DdeClient client = new DdeClient(service, topic); clients.Add(client); } } var onDisconnected = (Func <object, Task <object> >)callbacks["OnDisconnected"]; foreach (DdeClient client in clients) { client.Disconnected += async(object sender, DdeDisconnectedEventArgs args) => { var obj = new Dictionary <string, object>(); obj["service"] = client.Service; obj["topic"] = client.Topic; obj["isDisposed"] = args.IsServerInitiated; obj["isServerInitiated"] = args.IsServerInitiated; await Task.Run(async() => await onDisconnected(obj)); }; } var onAdvise = (Func <object, Task <object> >)callbacks["OnAdvise"]; foreach (DdeClient client in clients) { client.Advise += async(object sender, DdeAdviseEventArgs args) => { var obj = new Dictionary <string, object>(); obj["service"] = client.Service; obj["topic"] = client.Topic; obj["item"] = args.Item; obj["text"] = Encoding.Default.GetString(args.Data).Trim('\0', ' ').ToString(); await Task.Run(async() => await onAdvise(obj)); }; } return((Func <object, Task <object> >)(async(i) => { var opts = (IDictionary <string, object>)i; var method = (string)opts["method"]; var command = opts.ContainsKey("command") ? (string)opts["command"] : null; var data = opts.ContainsKey("data") ? (string)opts["data"] : null; var format = opts.ContainsKey("format") ? (int)opts["format"] : 1; var timeout = opts.ContainsKey("timeout") ? (int)opts["timeout"] : 10000; var hot = opts.ContainsKey("hot") ? (bool)opts["hot"] : true; var callback = opts.ContainsKey("callback") ? (Func <object, Task <object> >)opts["callback"] : (o) => null; var results = new List <IDictionary <string, object> >(); /* * string item = null; * if (opts.ContainsKey("item")) * { * item = (string)opts["item"]; * } * * if (clients.Count == 1 && item != null) // a single client and only one 'item' is supplied. * { * var client = clients.First(); * ((IDictionary<string, object>)services[client.Service])[client.Topic] = new[] { item }; * * byte[] result = null; * * switch (method) * { * case "Request": * result = client.Request(item, format, timeout); * return Encoding.Default.GetString(result); * case "BeginExecute": * await Task.Run(() => * { * var tcs = new TaskCompletionSource<bool>(); * AsyncCallback cb = (ar) => { tcs.SetResult(true); }; * client.BeginExecute(command, cb, client); * var r = tcs.Task.Result; * }); * break; * case "BeginPoke": * await Task.Run(() => * { * var tcs = new TaskCompletionSource<bool>(); * AsyncCallback cb = (ar) => { tcs.SetResult(true); }; * var bytes = Encoding.Default.GetBytes((string)opts["data"] + "\0"); * client.BeginPoke(item, bytes, format, cb, client); * var r = tcs.Task.Result; * }); * break; * case "BeginRequest": * await Task.Run(() => * { * var tcs = new TaskCompletionSource<byte[]>(); * AsyncCallback cb = (ar) => * { * tcs.SetResult(client.EndRequest(ar)); * }; * client.BeginRequest(item, format, cb, client); * result = tcs.Task.Result; * }); * return Encoding.Default.GetString(result); * case "BeginStartAdvise": * await Task.Run(() => * { * var tcs = new TaskCompletionSource<bool>(); * AsyncCallback cb = (ar) => { tcs.SetResult(true); }; * client.BeginStartAdvise(item, format, hot, cb, client); * var r = tcs.Task.Result; * }); * break; * case "BeginStopAdvise": * await Task.Run(() => * { * var tcs = new TaskCompletionSource<bool>(); * AsyncCallback cb = (ar) => { tcs.SetResult(true); }; * client.BeginStopAdvise(item, cb, client); * var r = tcs.Task.Result; * }); * break; * case "Service": * return client.Service; * case "Topic": * return client.Topic; * case "Handle": * return client.Handle; * case "IsConnected": * return client.IsConnected; * case "IsPaused": * return client.IsPaused; * } * } */ if (clients.Count != 0) { switch (method) { case "Connect": clients.ForEach((c) => c.Connect()); break; case "Disconnect": clients.ForEach((c) => c.Disconnect()); break; case "Pause": clients.ForEach((c) => c.Pause()); break; case "Resume": clients.ForEach((c) => c.Resume()); break; case "Execute": clients.ForEach((c) => c.Execute(command, timeout)); break; case "Poke": foreach (DdeClient client in clients) { var topics = (IDictionary <string, object>)services[client.Service]; var items = (object[])topics[client.Topic]; foreach (string item_ in items) { client.Poke(item_, data, timeout); } } break; case "Request": foreach (DdeClient client in clients) { var topics = (IDictionary <string, object>)services[client.Service]; // var items = (object[])topics[client.Topic]; var items = (object[])opts["item"]; foreach (string item_ in items) { var result = client.Request(item_, format, timeout); var obj = new Dictionary <string, object>(); obj["service"] = client.Service; obj["topic"] = client.Topic; obj["item"] = item_; obj["result"] = Encoding.Default.GetString(result).Trim('\0', ' ').ToString(); results.Add(obj); } } return results.ToArray(); case "StartAdvise": foreach (DdeClient client in clients) { var topics = (IDictionary <string, object>)services[client.Service]; var items = (object[])topics[client.Topic]; foreach (string item_ in items) { client.StartAdvise(item_, format, hot, timeout); } } break; case "StopAdvise": foreach (DdeClient client in clients) { var topics = (IDictionary <string, object>)services[client.Service]; var items = (object[])topics[client.Topic]; foreach (string item_ in items) { client.StopAdvise(item_, timeout); } } break; case "Dispose": clients.ForEach((c) => c.Dispose()); break; case "Service": return clients.Select((c) => c.Service).ToArray(); case "Topic": return clients.Select((c) => c.Topic).Distinct().ToArray(); case "Handle": return clients.Select((c) => c.Handle).ToArray(); case "IsConnected": return clients.All((c) => c.IsConnected); case "IsPaused": return clients.All((c) => c.IsPaused); } } return null; })); }
/// <summary> /// Get URL's from Browsers /// </summary> #region URL's from Chrome public static string GetURL(string Browser) { string ret = ""; Process[] procs = Process.GetProcessesByName(Browser); foreach (Process proc in procs) { if (proc.MainWindowHandle == IntPtr.Zero) { continue; } AutomationElement elmChrome = AutomationElement.FromHandle(proc.MainWindowHandle); AutomationElement elmUrlBarChrome = null; // Google Chrome if (Browser == Settings.GoogleChrome_Browser) { try { var elm1 = elmChrome.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "Google Chrome")); if (elm1 == null) { continue; } var elm2 = TreeWalker.RawViewWalker.GetLastChild(elm1); var elm3 = elm2.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "")); var elm4 = TreeWalker.RawViewWalker.GetNextSibling(elm3); var elm5 = elm4.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.ToolBar)); var elm6 = elm5.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "")); elmUrlBarChrome = elm6.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit)); } catch { continue; } if (elmUrlBarChrome == null) { continue; } if ((bool)elmUrlBarChrome.GetCurrentPropertyValue(AutomationElement.HasKeyboardFocusProperty)) { continue; } AutomationPattern[] patterns = elmUrlBarChrome.GetSupportedPatterns(); if (patterns.Length == 1) { try { ret = ((ValuePattern)elmUrlBarChrome.GetCurrentPattern(patterns[0])).Current.Value; return(ret); } catch { } if (ret != "") { if (Regex.IsMatch(ret, @"^(https:\/\/)?[a-zA-Z0-9\-\.]+(\.[a-zA-Z]{2,4}).*$")) { if (!ret.StartsWith("http")) { ret = "http://" + ret; } return(ret); } } continue; } return(ret); } // Mozilla Firefox if (Browser == Settings.MozillaFirefox_Browser) { try { DdeClient dde = new DdeClient("firefox", "WWW_GetWindowInfo"); dde.Connect(); string url = dde.Request("URL", int.MaxValue); string[] text = url.Split(new string[] { "\",\"" }, StringSplitOptions.RemoveEmptyEntries); dde.Disconnect(); ret = text[0].Substring(1); return(ret); } catch { } } } return(ret); #endregion }