private static string GetOperaUrl(IntPtr hWnd)
        {
            string url = null;

            try
            {
                var dde = new NDde.Client.DdeClient("opera", "WWW_GetWindowInfo");
                dde.Connect();
                url = dde.Request("URL", 3000);
                dde.Disconnect();
                if (!string.IsNullOrEmpty(url))
                {
                    url = url.Split(',')[0].Trim('\"');
                }
            }
            catch (Exception ex)
            {
                TraceLogger.Instance.WriteException(ex);
                // if not support dde, try window text.
                try
                {
                    IntPtr hAddressWnd = User32.FindWindowEx(hWnd, IntPtr.Zero, "ViewsTextfieldEdit", "");
                    if (hAddressWnd != IntPtr.Zero)
                    {
                        StringBuilder sb = new StringBuilder(2083);
                        User32.SendMessage(hAddressWnd, User32.WM_GETTEXT, 2083, sb);
                        url = sb.ToString();
                    }
                }
                catch (Exception ex2) { TraceLogger.Instance.WriteException(ex2); }
            }
            return(url);
        }
        private static string GetFirfoxUrl(IntPtr hWnd)
        {
            string url = null;

            try
            {
                var dde = new NDde.Client.DdeClient("firefox", "WWW_GetWindowInfo");
                dde.Connect();
                url = dde.Request("URL", 3000);
                dde.Disconnect();
                if (!string.IsNullOrEmpty(url))
                {
                    url = url.Split(',')[0].Trim('\"');
                }
            }
            catch (Exception ex) { TraceLogger.Instance.WriteException(ex); }
            return(url);
        }
Exemple #3
0
 // This requires NDde
 // http://ndde.codeplex.com/
 public static URLDetails[] Firefox()
 {
     NDde.Client.DdeClient dde = new NDde.Client.DdeClient("Firefox", "WWW_GetWindowInfo");
     try
     {
         dde.Connect();
         String url = dde.Request("URL", Int32.MaxValue);
         dde.Disconnect();
         Int32 stop = url.IndexOf('"', 1);
         return(new URLDetails[] {
             new URLDetails()
             {
                 URL = url.Substring(1, stop - 1),
                 Title = url.Substring(stop + 3, url.Length - stop - 8)
             }
         });
     }
     catch (Exception)
     {
         return(null);
     }
 }
        public void ThreadProc(Object stateInfo)
        {
            // No state object was passed to QueueUserWorkItem, so stateInfo is null.
            Console.WriteLine("Hello from the thread pool.");

            NDde.Client.DdeClient client = new NDde.Client.DdeClient("SatPC32", "SatPcDdeConv");

            try
            {
                client.Connect();
                client.StartAdvise("SatPcDdeItem", 1, true, 60000);

                panel_status.Invoke((MethodInvoker) delegate {
                    panel_status.Visible = true;
                });

                while (true)
                {
                    if (AppStatus == "stopped")
                    {
                        client.Disconnect();
                        client.Dispose();
                        break;
                    }

                    string satdata = client.Request("SatPcDdeItem", 60000);

                    string[] words = satdata.Split(' ');

                    //Console.WriteLine(word);
                    string satname       = "";
                    string downlink_freq = "";
                    string uplink_freq   = "";
                    string downlink_mode = "";
                    string uplink_mode   = "";

                    foreach (string word in words)
                    {
                        // Get Satellite Name
                        if (word.StartsWith("SN"))
                        {
                            satname = word.Remove(0, 2);
                        }
                        else if (word.StartsWith("AZ"))
                        {
                            string azimuth = word.Remove(0, 2);
                        }
                        else if (word.StartsWith("EL"))
                        {
                            string elevation = word.Remove(0, 2);
                        }
                        else if (word.StartsWith("UP"))
                        {
                            uplink_freq = word.Remove(0, 2);
                        }
                        else if (word.StartsWith("UM"))
                        {
                            uplink_mode = word.Remove(0, 2);
                        }
                        else if (word.StartsWith("DN"))
                        {
                            downlink_freq = word.Remove(0, 2);
                        }
                        else if (word.StartsWith("DM"))
                        {
                            downlink_mode = word.Remove(0, 2);
                        }

                        label_satname.Invoke((MethodInvoker) delegate {
                            label_satname.Text = satname;
                        });

                        label_uplink_freq.Invoke((MethodInvoker) delegate {
                            label_uplink_freq.Text = uplink_freq;
                        });

                        label_downlink_freq.Invoke((MethodInvoker) delegate {
                            label_downlink_freq.Text = downlink_freq;
                        });

                        label_satmode_up.Invoke((MethodInvoker) delegate {
                            label_satmode_up.Text = uplink_mode;
                        });

                        label_satmode_down.Invoke((MethodInvoker) delegate {
                            label_satmode_down.Text = downlink_mode;
                        });

                        label_cloudlog_status.Invoke((MethodInvoker) delegate {
                            label_cloudlog_status.Text = "Connected";
                        });

                        button1.Invoke((MethodInvoker) delegate {
                            button1.Text = "Stop SatPC32 <> Cloudlog Link";
                        });
                    }

                    using (WebClient cli = new WebClient())
                    {
                        try
                        {
                            ServicePointManager.SecurityProtocol       = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
                            cli.Headers[HttpRequestHeader.ContentType] = "application/json";
                            string response = cli.UploadString(textBox1.Text + "/index.php/api/radio", "{\"radio\":\"SatPC32\",\"frequency\":0,\"mode\":\"non\",\"sat_name\":\"" + satname + "\",\"downlink_freq\":\"" + downlink_freq + "\",\"uplink_freq\":\"" + uplink_freq + "\",\"downlink_mode\":\"" + downlink_mode + "\",\"uplink_mode\":\"" + uplink_mode + "\",\"key\":\"" + textBox2.Text + "\"}");
                            Console.WriteLine(response);
                            label_cloudlog_status.Invoke((MethodInvoker) delegate {
                                label_cloudlog_status.Text = "Connected";
                            });
                        }
                        catch (WebException e)
                        {
                            // ERROR: Application forced to stop the thread although buttons etc not activated.
                            label_cloudlog_status.Invoke((MethodInvoker) delegate {
                                label_cloudlog_status.Text = "Disconnected";
                            });

                            panel_status.Invoke((MethodInvoker) delegate {
                                panel_status.Visible = false;
                            });

                            button1.Invoke((MethodInvoker) delegate {
                                button1.Text = "SatPC32 <> Cloudlog Connect";
                            });

                            textBox1.Invoke((MethodInvoker) delegate {
                                textBox1.ReadOnly = false;
                            });

                            string text = "Lost connection to Cloudlog";
                            MessageBox.Show(text);

                            AppStatus = "stopped";

                            break;
                        }
                    }

                    System.Threading.Thread.Sleep(1000);
                }
            } catch
            {
                panel_status.Invoke((MethodInvoker) delegate {
                    panel_status.Visible = false;
                });

                button1.Invoke((MethodInvoker) delegate {
                    button1.Text = "SatPC32 <> Cloudlog Connect";
                });

                textBox1.Invoke((MethodInvoker) delegate {
                    textBox1.ReadOnly = false;
                });

                string text = "DDE Connection to SatPC32 Failed";
                MessageBox.Show(text);

                AppStatus = "stopped";
            }
        }
Exemple #5
0
        public static ContextInfo GetUserContextInfo()
        {
            IntPtr hActive = GetActiveWindow();

            if (hActive == IntPtr.Zero)
            {
                return(null);
            }

            uint pId = 0;

            NativeMethods.GetWindowThreadProcessId(hActive, out pId);

            var title = GetWindowTitle(hActive);

            var fileName    = GetProcessFilename(pId);
            var fileNameKey = Path.GetFileName(fileName).ToUpperInvariant();

            string         location       = null;
            LocationSource locationSource = LocationSource.None;

            if (ddeTargets.ContainsKey(fileNameKey))
            {
                try
                {
                    using (var c = new NDde.Client.DdeClient(ddeTargets[fileNameKey], "WWW_GetWindowInfo"))
                    {
                        if (c.TryConnect() == 0)
                        {
                            locationSource = LocationSource.DDE;
                            var res = c.Request("0xFFFFFFFF", int.MaxValue);
                            if (res != null)
                            {
                                res = res.TrimEnd('\0');
                                var parts = res.Split(',');
                                location = parts[0].Trim('\"');
                            }
                        }
                    }
                }
                catch (NDde.DdeException ex)
                {
                    Debug.Write(ex);
                }
            }


            if (locationSource == LocationSource.None && pathLookups.ContainsKey(fileNameKey))
            {
                var textHWnd = LookupWindow(hActive, pathLookups[fileNameKey]);

                if (textHWnd != IntPtr.Zero)
                {
                    locationSource = LocationSource.Typed;
                    location       = ReadWindowText(textHWnd);
                }
            }

            return(new ContextInfo
            {
                HWnd = hActive,
                FileName = fileName,
                Title = title,
                ProcessId = pId,
                Location = location,
                LocationSource = locationSource,
            });
        }