Syed Jahanzaib – Personal Blog to Share Knowledge !

April 12, 2017

Short Notes for C#

Filed under: Programming — Tags: , , , , , — Syed Jahanzaib / Pinochio~:) @ 11:45 AM

Following are few snippets / tips for C# used in various applications I made for personnel usage.

 


Declare Global Variables


namespace WindowsFormsApplication3
{

public partial class Form1 : Form
{

public class Globals
{

// defining File name in a folder

public static string LISTFILEPATH = @"C:\temp\list.txt";

// defining General variable to hold any result

public static string NETSTATUS = "";
}


Check if app is already running, if yes, then inform accordingly and EXIT the app !


private void Form1_Load(object sender, EventArgs e)
{
Process aProcess = Process.GetCurrentProcess();
string aProcName = aProcess.ProcessName;
if (Process.GetProcessesByName(aProcName).Length > 1)
{

MessageBox.Show("This APP is already running. Close previously running instance first!", "This APP  App Already Running !",
MessageBoxButtons.OK, MessageBoxIcon.Error);
System.Windows.Forms.Application.Exit();
Application.ExitThread();
Application.Exit();
}


Check for Folder / file, if not exists then create


// Check if directory exists
if (Directory.Exists(@"C:\temp\)"))
{
// IF IT EXISTS, DO NOTHING
}
else
// IF ITS NOT , CREATE IT
{
Directory.CreateDirectory(@"C:\temp\");
}
// IF IT EXISTS, DO NOTHING
if (File.Exists(Globals.LISTFILEPATH))
{
// Do nothing
}
else
// IF ITS NOT , CREATE IT
{
//File.Create(Globals.LISTFILEPATH);
using (StreamWriter sw = new StreamWriter(Globals.LISTFILEPATH, true))
{
//
}
}

Add some colors to your output text


// Some coloring fun
private void ColorRed()
{
StatusTextBox.SelectionColor = Color.Red;
}


Adding Bold Text


StatusTextBox.SelectionFont = new Font(StatusTextBox.Font, StatusTextBox.Font.Style | FontStyle.Bold);
this.StatusTextBox.AppendText("\r\n- Processing ...\r\n");
StatusTextBox.SelectionFont = new Font(StatusTextBox.Font, StatusTextBox.Font.Style | FontStyle.Regular);


Multiple IF Statement matching


if ((Globals.Variable1 == "0") && (Globals.Variable2 == "0"))

// then do this or that


Message Box with Warning sign & OK button

MessageBox.Show("Error on ping:", MessageBoxButtons.OK, MessageBoxIcon.Warning);

Running thread separately without hanging UI

await Task.Run(() =>
{

// your task

});
}

Testing Remote TCP Port Status

{
using(TcpClient tcpClient = new TcpClient())

try {
tcpClient.Connect("1.1.1.1", 80);
// Succeed OK ! show the result, you can update text box, variable etc anything of your choice

} catch (Exception) {
// FAILED ! show the result, you can update text box, variable etc anything of your choice
}
}

Getting Default Gateway(s) bypassing few types of interfaces


foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
if (ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet);
{
if ((ni.Description.IndexOf("Vmware", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Vmware", StringComparison.OrdinalIgnoreCase) >= 0))
continue;
if ((ni.Description.IndexOf("Vmware", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Vmware", StringComparison.OrdinalIgnoreCase) >= 0))
continue;
if ((ni.Description.IndexOf("Loopback", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Loopback", StringComparison.OrdinalIgnoreCase) >= 0))
continue;
if ((ni.Description.IndexOf("Isatap", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Isatap", StringComparison.OrdinalIgnoreCase) >= 0))
continue;
if ((ni.Description.IndexOf("Tunnel", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Tunnel", StringComparison.OrdinalIgnoreCase) >= 0))
continue;
if ((ni.Description.IndexOf("Microsoft 6to4 Adapter", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Microsoft 6to4 Adapter", StringComparison.OrdinalIgnoreCase) >= 0))
continue;

this.StatusTextBox.AppendText("\r\n" + ni.Name + "\r\n");
foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses)
{
if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
// Console.WriteLine(ip.Address.ToString());
this.StatusTextBox.AppendText("\r\n" + ip.Address.ToString() + "\r\n");
}
}
}
}


 ~iBBi – Pinger  ¯\_(ツ)_/¯   – Customized Ping App  for My 3 Kids ~

iBBi PINGER application code I made to continuously ping any remote host by ip or dns name, and output any error with some style colors and images. I made it for my kids who uses computers and occasionally my PTCL Evo gets hangs or internet stopped working and the kids have no idea whats going on this application runs in background and popup yellow or green icon and iconic message so kids can understand internet is not working. the task was very simple and it worked ok, but later I was bitten by an dangerous animal as known as ‘curiosity‘ which forcefully made to add do some late night testings to add/enhance some additional features which were totally useless or not required 😛 lol.

Following is unfinished product and contains some bugs as well. Still posting it as reference for myself , just in case I managed to burn my PC.


// iBBi Pinger program, small app that can ping remote host
// and shows any error in fancy style , colors, icons, trayicon notifications, etc etc
// April, 2017

using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Windows.Forms;
using System.Net;
using System.Net.NetworkInformation;
using System.IO;
using System.Runtime.InteropServices;
using System.Net.Sockets;
using System.Reflection;
using System.Security.AccessControl;
using System.Security.Principal;
using System.Text.RegularExpressions;

namespace WindowsFormsApplication3
{

public partial class Form1 : Form
{

public class Globals
{

public static string LISTFILEPATH = @"C:\temp\list.txt";
public static string DnsError = "0";
public static string currentNetStatus = "0";
public static string TCP_STATUS = "0";
public static string TCP_PORT = "80";
public static string GHOST = "";
public static string GOPING = "";
public static string PIP = "";
public static string LAN = "";
public static string NETSTATUS = "";
public static string DGW = "";
}

public Form1()
{
InitializeComponent();
Globals.NETSTATUS = "0";
StatusTextBox.SelectionColor = Color.Black;
pictureBox1.Image = null;
timer1.Stop();
timer2.Stop();
timer1.Enabled = false;
}
private void Form1_Load(object sender, EventArgs e)
{
Process aProcess = Process.GetCurrentProcess();
string aProcName = aProcess.ProcessName;
if (Process.GetProcessesByName(aProcName).Length > 1)
{

MessageBox.Show("Pinger is already running. Close previously running instance first!", "Pinger App Already Running !",
MessageBoxButtons.OK, MessageBoxIcon.Error);
System.Windows.Forms.Application.Exit();
Application.ExitThread();
Application.Exit();
}

// Check if directory exists
if (Directory.Exists(@"C:\temp\)"))
{
// Do nothing
}
else
{
Directory.CreateDirectory(@"C:\temp\");
}
if (File.Exists(Globals.LISTFILEPATH))
{
// Do nothing
}
else
{
//File.Create(Globals.LISTFILEPATH);
using (StreamWriter sw = new StreamWriter(Globals.LISTFILEPATH, true))
{
//
}
}
string[] lineOfContents = File.ReadAllLines(Globals.LISTFILEPATH);
foreach (var line in lineOfContents)
{
string[] tokens = line.Split(',');
if (!comboBox1.Items.Contains(tokens[0]))
comboBox1.Items.Add(tokens[0]);
}
}
// Some coloring fun
private void ColorRed()
{
this.Invoke((MethodInvoker)delegate
{
StatusTextBox.SelectionColor = Color.Red;
});
}
private void ColorBlack()
{
this.Invoke((MethodInvoker)delegate
{
StatusTextBox.SelectionColor = Color.Black;
});
}
private void ColorBlue()
{
StatusTextBox.SelectionColor = Color.Blue;
}
private void ColorGreen()
{
StatusTextBox.SelectionColor = Color.Green;
}
private void ColorOrange()
{
StatusTextBox.SelectionColor = Color.Orange;
}
private async void PingButton_Click(object sender, EventArgs e)
{
Globals.GOPING = "1";
pictureBox1.Image = null;
ProgressPictureBox1.Image = null;
Globals.GHOST = comboBox1.Text;
StatusTextBox.SelectionFont = new Font(StatusTextBox.Font, StatusTextBox.Font.Style | FontStyle.Bold);
this.StatusTextBox.AppendText("\r\n- Processing ...\r\n");
StatusTextBox.SelectionFont = new Font(StatusTextBox.Font, StatusTextBox.Font.Style | FontStyle.Regular);
if (!comboBox1.Text.Contains('.'))
{
ColorRed();
this.StatusTextBox.AppendText("\r\n" + "Somethign missing ! Please select or enter valid Hostname or IP address !\r\n");
ColorBlack();
return;
}

{
if (string.IsNullOrEmpty(comboBox1.Text) || (comboBox1.Text == "Seleact or type Destination"))
{
ColorRed();
this.StatusTextBox.AppendText("\r\n" + "Please select or enter valid Hostname or IP address !\r\n");
ColorBlack();
pictureBox1.Image = null;
return;
}
else
{
PingButton.Enabled = false;
PingButton.Text = "Pinging...";
// IsNetworkAvailable();
//if (Globals.LAN == "")
//{
//this.StatusTextBox.AppendText("\r\n-PINGBUTTON CHECK- LAN DISCONNECTED!\r\n");
// TIMER_STOP_FUNC();
//return;
// }

//else
//{
//this.StatusTextBox.AppendText("\r\n-LAN OK!\r\n");
//}

TIMER_START_FUNC();
}
}
}




private void OnApplicationExit(object sender, EventArgs e)
{
try
{
if (notifyIcon1 != null)
{
notifyIcon1.Visible = false;
notifyIcon1.Icon = null;
notifyIcon1.Dispose();
notifyIcon1 = null;
}
}
catch { }
}
private void notifyIcon1_DoubleClick(object sender, EventArgs e)
{
this.Show();
this.WindowState = FormWindowState.Normal;
}
private void restoreToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Show();
this.WindowState = FormWindowState.Normal;
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
TIMER_STOP_FUNC();
notifyIcon1.Visible = false;
notifyIcon1.Icon = null;
notifyIcon1.Dispose();
notifyIcon1 = null;
Application.Exit();
}
private void menuStrip1_Click(object sender, EventArgs e)
{
}
private void menuStrip1_MouseClick(object sender, MouseEventArgs e)
{
this.Show();
WindowState = FormWindowState.Normal;
}
private void Form1_Move(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
if ((Globals.currentNetStatus == "0") && (Globals.TCP_STATUS == "0"))
{
this.notifyIcon1.Icon = Properties.Resources.icon_standby;
}
else
{
this.notifyIcon1.Icon = Properties.Resources.icon_online;
}
this.Hide();
}
}
private void exitToolStripMenuItem1_Click(object sender, EventArgs e)
{
TIMER_STOP_FUNC();
notifyIcon1.Visible = false;
notifyIcon1.Icon = null;
notifyIcon1.Dispose();
notifyIcon1 = null;
Application.Exit();
}
private void StopPing_Click(object sender, EventArgs e)
{
this.notifyIcon1.Icon = Properties.Resources.icon_standby;
ProgressPictureBox1.Image = null;
pictureBox1.Image = null;
if (timer1.Enabled == false)
//if (!timer1.Enabled)
{
StatusTextBox.SelectionColor = Color.Red;
this.StatusTextBox.AppendText("\r\n" + "Ping is not running !\r\n");
StatusTextBox.SelectionColor = Color.Black;
}
if (timer1.Enabled == true)
{
TIMER_STOP_FUNC();
ColorBlue();
StatusTextBox.SelectionFont = new Font(StatusTextBox.Font, StatusTextBox.Font.Style | FontStyle.Bold);
this.StatusTextBox.AppendText("\r\n" + "Stopped on User Request !\r\n");
StatusTextBox.SelectionFont = new Font(StatusTextBox.Font, StatusTextBox.Font.Style | FontStyle.Regular);
ColorBlack();
this.notifyIcon1.Icon = Properties.Resources.icon_standby;
ProgressPictureBox1.Image = null;
PingButton.Enabled = true;
PingButton.Text = "Start Ping";
pictureBox1.Image = null;
}
}
//}
private void SaveComboList_Click(object sender, EventArgs e)
{
using (StreamWriter writer = new StreamWriter(Globals.LISTFILEPATH, true))
{
try
{
if (comboBox1.Items.Contains(comboBox1.Text))
{
MessageBox.Show("The task '" + comboBox1.Text + "' already exist in list", "Task already exists");
}
else
{
comboBox1.Items.Add(comboBox1.Text);
writer.WriteLine(comboBox1.Text);
writer.Flush();
writer.Dispose();
}
}
catch
{
MessageBox.Show("The file '" + comboBox1.Text + "' could not be located", "File could not be located");
}
}
}
private void exitToolStripMenuItem1_Click_1(object sender, EventArgs e)
{
TIMER_STOP_FUNC();
notifyIcon1.Visible = false;
notifyIcon1.Icon = null;
notifyIcon1.Dispose();
notifyIcon1 = null;
Application.Exit();
}
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.Show();
this.WindowState = FormWindowState.Normal;
}
private void exitToolStripMenuItem2_Click(object sender, EventArgs e)
{
TIMER_STOP_FUNC();
notifyIcon1.Visible = false;
notifyIcon1.Icon = null;
notifyIcon1.Dispose();
notifyIcon1 = null;
Application.Exit();
}
private void exitToolStripMenuItem3_Click(object sender, EventArgs e)
{
TIMER_STOP_FUNC();
notifyIcon1.Visible = false;
notifyIcon1.Icon = null;
notifyIcon1.Dispose();
notifyIcon1 = null;
Application.Exit();
}
private void restoreToolStripMenuItem_Click_1(object sender, EventArgs e)
{
this.Show();
WindowState = FormWindowState.Normal;
}

private void PingCompletedCallback(object sender, PingCompletedEventArgs e)
{
if (e.Error != null)
{
MessageBox.Show(string.Format("Ping failed: {0}", e.Error.ToString()),
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
((AutoResetEvent)e.UserState).Set();
}
DisplayReply(e.Reply);
((AutoResetEvent)e.UserState).Set();
}
public void DisplayReply(PingReply reply)
{
if (timer1.Enabled)
{
string host = Globals.GHOST;
Ping ping = new Ping();
var pingSender = new Ping();
try
{
if (reply.Status == IPStatus.Success)
{
this.Invoke((MethodInvoker)delegate
{
ColorGreen();
this.StatusTextBox.AppendText(string.Format("{0}\r\n", reply.Status + " -- delay ms > " + reply.RoundtripTime.ToString() + " for > " + comboBox1.Text + " - " + Globals.PIP));
ColorBlack();
Globals.currentNetStatus = "1";
pictureBox1.Image = Properties.Resources.online_image;
this.notifyIcon1.Icon = Properties.Resources.icon_online;
});
}
else
{
Globals.currentNetStatus = "0";
Globals.TCP_STATUS = "0";
TestTCPConn();
this.textBox1.Text = Globals.currentNetStatus;
this.textBox2.Text = Globals.TCP_STATUS;
if ((Globals.currentNetStatus == "0") && (Globals.TCP_STATUS == "1"))
{
this.Invoke((MethodInvoker)delegate
{
this.StatusTextBox.AppendText(string.Format("\r\n Ping Timeout but PORT " + Globals.TCP_PORT + " responding > " + comboBox1.Text + " - " + Globals.PIP));
pictureBox1.Image = Properties.Resources.online_image;
});
//this.notifyIcon1.Icon = Properties.Resources.icon_online;
}
if ((Globals.currentNetStatus == "0") && (Globals.TCP_STATUS == "0"))
//}
if ((Globals.currentNetStatus == "0") && (Globals.TCP_STATUS == "0"))
if (timer1.Enabled)
{
this.Invoke((MethodInvoker)delegate
{
pictureBox1.Image = Properties.Resources.offline_image;
this.notifyIcon1.Icon = Properties.Resources.icon_standby;
this.StatusTextBox.AppendText(string.Format("PING + PORT test Failed > " + comboBox1.Text + " - " + Globals.PIP + "\r\n"));
});
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error on ping:" + ex.Message, "Error on ping!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}

private void timer1_Tick(object sender, EventArgs e)
{
IsNetworkAvailable();
if (Globals.LAN == "")
{
this.StatusTextBox.AppendText("\r\n-Timer1_TICK Section: No Active Local Network Found. Exiting ...\r\n");
this.ProgressPictureBox1.Image = Properties.Resources.ProgressPictureBox1;
gdnslabel.Text = "Warning: LAN is disconnected ...";
Globals.currentNetStatus = "0";
Globals.TCP_STATUS = "0";
pictureBox1.Image = Properties.Resources.lan_disconnected;
//this.notifyIcon1.Icon = Properties.Resources.icon_standby;
return;
}
else
{
TestPInger();
}
}
protected void TIMER_STOP_FUNC()
{
comboBox1.Enabled = true;
Globals.PIP = "";
timer1.Stop();
timer2.Stop();
gdnslabel.Text = null;
timer1.Enabled = false;
ProgressPictureBox1.Image = null;
pictureBox1.Image = null;
PingButton.Enabled = true;
PingButton.Text = "Start Ping";
}
protected void TIMER_START_FUNC()
{
this.Invoke((MethodInvoker)delegate
{
comboBox1.Enabled = false;
PingButton.Enabled = false;
PingButton.Text = "Pinging ...";
ProgressPictureBox1.Image = Properties.Resources.ProgressPictureBox1;
timer1.Start();
//timer2.Start();
});
}
private static IPAddress GetIpFromHost(ref string host)
{
string errMessage = string.Empty;
IPAddress address = null;
try
{
address = Dns.GetHostByName(host).AddressList[0];
}
catch (SocketException ex)
{
}
return address;
}

private void RemoveList_Click(object sender, EventArgs e)
{
comboBox1.Items.Clear();
File.Create(Globals.LISTFILEPATH).Close();
}
private void ExitImage_Click(object sender, EventArgs e)
{
TIMER_STOP_FUNC();
notifyIcon1.Visible = false;
notifyIcon1.Icon = null;
notifyIcon1.Dispose();
notifyIcon1 = null;
Application.Exit();
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
TIMER_STOP_FUNC();
Application.Exit();
}
private void pictureBox1_Click(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Start();
}
private async void TestPInger()
{
//MessageBox.Show(Globals.LAN);
IsNetworkAvailable();
if (Globals.LAN == "")
{
this.StatusTextBox.AppendText("\r\n-Testpinger Section: No Active Local Network Found. Exiting ...\r\n");
this.ProgressPictureBox1.Image = Properties.Resources.ProgressPictureBox1;
gdnslabel.Text = "Warning: Disconnected ...";
Globals.currentNetStatus = "0";
Globals.TCP_STATUS = "0";
pictureBox1.Image = Properties.Resources.lan_disconnected;
//this.notifyIcon1.Icon = Properties.Resources.icon_standby;
return;
}
else
{
//gdnslabel.Text = "INFO: LAN is Connected.";
pictureBox1.Image = null;
}

CheckDGW();
if (Globals.DGW == "")
{
//this.StatusTextBox.AppendText("\r\n- testpinger - OOOOOOOOO No IPV4 Gateway found\r\n");
//TIMER_STOP_FUNC();
return;
}
else
{
//this.StatusTextBox.AppendText("\r\n- LAN Ok. proceeding further ...\r\n");
this.pictureBox1.Image = null;
}
{
await Task.Run(() =>
{
try
{
string host = Globals.GHOST;
int timeout = 1000;
var pingSender = new Ping();
AutoResetEvent waiter = new AutoResetEvent(false);
if (Globals.PIP == "")
{
IPAddress hostAddress = Dns.GetHostByName(host).AddressList[0];
Globals.PIP = hostAddress.ToString();
}
else
{
pingSender.PingCompleted += PingCompletedCallback;
pingSender.SendAsync(Globals.PIP, timeout, waiter);
}
}
catch (SocketException ex)
{
this.notifyIcon1.Icon = Properties.Resources.icon_standby;
this.Invoke((MethodInvoker)delegate
{
ColorRed();
this.StatusTextBox.AppendText("\r\n-DNS ERROR: unable to resolve > " + Globals.GHOST + " - Retrying in few seconds! \r\n");
ProgressPictureBox1.Image = Properties.Resources.ProgressPictureBox1;
pictureBox1.Image = Properties.Resources.dnsproblem_image;
Globals.currentNetStatus = "0";
Globals.TCP_STATUS = "0";
ColorBlack();
});
}
});
}
}
private void TestTCPConn()
{
using(TcpClient tcpClient = new TcpClient())

try {
tcpClient.Connect(Globals.GHOST, 80);
Globals.TCP_STATUS = "1";
} catch (Exception) {
Globals.TCP_STATUS = "0";
}
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
}
private void comboBox1_KeyDown(object sender, KeyEventArgs e)
{
Keys key = e.KeyCode;
if (key == Keys.Space)
{
e.Handled = true;
}
base.OnKeyDown(e);
}
private void comboBox1_Leave(object sender, EventArgs e)
{
string str = comboBox1.Text;
comboBox1.Text = str.Replace(" ", String.Empty);
//MessageBox.Show("Don't accept Space char in your name");
this.Focus();
}
private void StatusTextBox_TextChanged_1(object sender, EventArgs e)
{
StatusTextBox.SelectionStart = StatusTextBox.Text.Length;
StatusTextBox.ScrollToCaret();
}
public static class ThreadHelperClass
{
delegate void SetTextCallback(Form f, Control ctrl, string text);
public static void SetText(Form form, Control ctrl, string text)
{
if (ctrl.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
form.Invoke(d, new object[] { form, ctrl, text });
}
else
{
ctrl.Text += text;
}
}
}
private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
}
private void timer2_Tick(object sender, EventArgs e)
{
IsOnline();
if (timer1.Enabled)
// if ((Globals.currentNetStatus == "0") && (Globals.TCP_STATUS == "1"))
if (Globals.currentNetStatus == "1")
{
this.notifyIcon1.Icon = Properties.Resources.icon_online;
}
if (timer1.Enabled)
if (Globals.TCP_STATUS == "1")
{
this.notifyIcon1.Icon = Properties.Resources.icon_online;
}
if (timer1.Enabled)
if ((Globals.currentNetStatus == "0") && (Globals.TCP_STATUS == "0"))
{
this.notifyIcon1.Icon = Properties.Resources.icon_standby;
}
}
public static IPAddress GetDefaultGateway()
{
//IsNetworkAvailable();
IPAddress result = null;
var cards = NetworkInterface.GetAllNetworkInterfaces().ToList();
if (cards.Any())
{
foreach (var card in cards)
{
var props = card.GetIPProperties();
if (props == null)
continue;

var gateways = props.GatewayAddresses;
if (!gateways.Any())
continue;
var gateway =
gateways.FirstOrDefault(g => g.Address.AddressFamily.ToString() == "InterNetwork");
if (gateway == null)
continue;
result = gateway.Address;
MessageBox.Show(result.ToString());
//MessageBox.Show(result.ToString());
if (result == null)
//MessageBox.Show("NO GW");
MessageBox.Show(result.ToString());
break;
};
}
// var dgw = result.ToString();
// if (dgw == null)
MessageBox.Show(result.ToString());
return result;
}

public static bool IsNetworkAvailable()
{
return IsNetworkAvailable(0);
}

protected async void IsOnline()
{
IsNetworkAvailable();
if (Globals.LAN == "")
{
ColorRed();
this.StatusTextBox.AppendText("\r\\nIsNetworkAvailable section: WARNING: No Active Local Network Found.");
ColorBlack();
Globals.currentNetStatus = "0";
Globals.TCP_STATUS = "0";
//return;
}
else
{
CheckDGW();
if (Globals.LAN == "")
{
ColorRed();
this.StatusTextBox.AppendText("\r\nisnetworkavailable section: WARNING: No Active Local Network Found...");
ColorBlack();
Globals.currentNetStatus = "0";
Globals.TCP_STATUS = "0";
TIMER_STOP_FUNC();
}
else

if (Globals.DGW == "")
{
this.StatusTextBox.AppendText("\r\n-Error: Cannot continue without valid IPV4 Gateway! Please verify your network settings & make sure it is connected with working network.\r\n");
//TIMER_START_FUNC();
//zaib
return;
}

await Task.Run(() =>
{
{
{
if (Globals.LAN == "" | Globals.DGW == "")
return;
}
try
{
Ping x = new Ping();
PingReply reply = x.Send("8.8.8.8");
if (reply.Status == IPStatus.Success)
{
//return true;
Globals.NETSTATUS = "1";
this.Invoke((MethodInvoker)delegate
{
gdnslabel.Text = "INFO: Google DNS is reachable by ICMP protocol.";
});
}
else
{
//if host is not reachable.
// return false;
Globals.NETSTATUS = "0";
this.Invoke((MethodInvoker)delegate
{
gdnslabel.Text = "Warning: Google DNS is NOT reachable by ICMP protocol!";
});
}
}
catch (SocketException ex)
{
{
//this.notifyIcon1.Icon = Properties.Resources.icon_standby;
}
}
}
});
}
}

public static bool IsNetworkAvailable(long minimumSpeed)
{
//Form1 frm1 = new Form1();
if (!NetworkInterface.GetIsNetworkAvailable())
return false;
foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
if ((ni.OperationalStatus != OperationalStatus.Up) ||
(ni.NetworkInterfaceType == NetworkInterfaceType.Loopback) ||
// (ni.NetworkInterfaceType == NetworkInterfaceType.vir) ||
(ni.NetworkInterfaceType == NetworkInterfaceType.Tunnel))

continue;
if (ni.Speed < minimumSpeed)
continue;

if (ni.Description.Equals("Microsoft Loopback Adapter", StringComparison.OrdinalIgnoreCase))
continue;

if ((ni.Description.IndexOf("Network Bridge", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Network Bridge", StringComparison.OrdinalIgnoreCase) >= 0))
continue;

if ((ni.Description.IndexOf("Vmware", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Vmware", StringComparison.OrdinalIgnoreCase) >= 0))
continue;

if ((ni.Description.IndexOf("Loopback", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Loopback", StringComparison.OrdinalIgnoreCase) >= 0))
continue;

if ((ni.Description.IndexOf("Isatap", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Isatap", StringComparison.OrdinalIgnoreCase) >= 0))
continue;

if ((ni.Description.IndexOf("Tunnel", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Tunnel", StringComparison.OrdinalIgnoreCase) >= 0))
continue;

if ((ni.Description.IndexOf("Microsoft 6to4 Adapter", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Microsoft 6to4 Adapter", StringComparison.OrdinalIgnoreCase) >= 0))
continue;
//MessageBox.Show("LAN FOUND");
Globals.LAN = "1";
//Form1 frm1 = new Form1();
//this.StatusTextBox.AppendText("\r\n- Section: LAN is ok ...\r\n");
return true;
}
//MessageBox.Show("LAN NOT FOUND");
Form1 frm1 = new Form1();
frm1.StatusTextBox.AppendText("\r\nIsNetworkAvailable(long minimumSpeed) Section: WARNING: No Active Local Network Found...");
frm1.StatusTextBox.AppendText("\r\n-Error: Cannot conitnue without valid IPV4 Gateway/! Please verify your network settings & make sure it is connected with working network.\r\n");
Globals.LAN = "0";
return false;

}

protected async void CheckDGW()
{
IPAddress result = null;
var cards = NetworkInterface.GetAllNetworkInterfaces().ToList();
if (cards.Any())
{
foreach (var card in cards)
{
var props = card.GetIPProperties();
if (props == null)
continue;

var gateways = props.GatewayAddresses;
if (!gateways.Any())
continue;
var gateway =
gateways.FirstOrDefault(g => g.Address.AddressFamily.ToString() == "InterNetwork");
if (gateway == null)
// Globals.DGW = "";
//this.StatusTextBox.AppendText("\r\n- No Network or IPV4 Gateway found. Cannot continue without them!\r\n");
//this.StatusTextBox.AppendText("if gw is null entry Your IPV4 Gateway is >" + Globals.DGW + "\r\n");
continue;

result = gateway.Address;
Globals.DGW = result.ToString();
// this.StatusTextBox.AppendText("Your IPV4 Gateway is >" + Globals.DGW + "\r\n");
break;
//MessageBox.Show("GATEWAY IS NULL2");
};
}
//if (Globals.DGW == "")
// ColorRed();
//this.StatusTextBox.AppendText("\r\n- No Network or IPV4 Gateway found. Cannot continue without them!\r\n");
//ColorBlack();
//return;
//return result;
var regx = new Regex("[:]");
if (regx.IsMatch(Globals.DGW))
{
this.StatusTextBox.AppendText("\r\n- ipv6 detected!\r\n");
MessageBox.Show("IPV6 detected");
Globals.DGW = "";
}
//MessageBox.Show(Globals.DGW);
if (Globals.DGW == "")
{

//this.StatusTextBox.AppendText("NULL Gateway >" + Globals.DGW + "\r\n");
//MessageBox.Show("GATEWAY IS NULL");
Globals.DGW = "";
// TIMER_STOP_FUNC();
//return;

}
else
{
//this.StatusTextBox.AppendText("Your IPV4 Gateway is >" + Globals.DGW + "\r\n");
}
}

private void button2_Click_2(object sender, EventArgs e)
{
foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
if (ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet);
{
if ((ni.Description.IndexOf("Vmware", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Vmware", StringComparison.OrdinalIgnoreCase) >= 0))
continue;
if ((ni.Description.IndexOf("Vmware", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Vmware", StringComparison.OrdinalIgnoreCase) >= 0))
continue;
if ((ni.Description.IndexOf("Loopback", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Loopback", StringComparison.OrdinalIgnoreCase) >= 0))
continue;
if ((ni.Description.IndexOf("Isatap", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Isatap", StringComparison.OrdinalIgnoreCase) >= 0))
continue;
if ((ni.Description.IndexOf("Tunnel", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Tunnel", StringComparison.OrdinalIgnoreCase) >= 0))
continue;
if ((ni.Description.IndexOf("Network Bridge", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Network Bridge", StringComparison.OrdinalIgnoreCase) >= 0))
continue;

if ((ni.Description.IndexOf("Microsoft 6to4 Adapter", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Microsoft 6to4 Adapter", StringComparison.OrdinalIgnoreCase) >= 0))
continue;

this.StatusTextBox.AppendText("\r\n" + ni.Name + "\r\n");
foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses)
{
if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
// Console.WriteLine(ip.Address.ToString());
this.StatusTextBox.AppendText("\r\n" + ip.Address.ToString() + "\r\n");
}
}
}
}

}

private void button1_Click(object sender, EventArgs e)
{
using (TcpClient tcpClient = new TcpClient())
{
try
{
tcpClient.Connect("dell.com", 80);
Console.WriteLine("Port open");
}
catch (Exception)
{
Console.WriteLine("Port closed");
}
}
}

private void button3_Click(object sender, EventArgs e)
{

}

private void button2_Click_1(object sender, EventArgs e)
{
foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
if (ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet);
{
if ((ni.Description.IndexOf("Vmware", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Vmware", StringComparison.OrdinalIgnoreCase) >= 0))
continue;
if ((ni.Description.IndexOf("Vmware", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Vmware", StringComparison.OrdinalIgnoreCase) >= 0))
continue;
if ((ni.Description.IndexOf("Loopback", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Loopback", StringComparison.OrdinalIgnoreCase) >= 0))
continue;
if ((ni.Description.IndexOf("Isatap", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Isatap", StringComparison.OrdinalIgnoreCase) >= 0))
continue;
if ((ni.Description.IndexOf("Tunnel", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Tunnel", StringComparison.OrdinalIgnoreCase) >= 0))
continue;
if ((ni.Description.IndexOf("Network Bridge", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Network Bridge", StringComparison.OrdinalIgnoreCase) >= 0))
continue;

if ((ni.Description.IndexOf("Microsoft 6to4 Adapter", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("Microsoft 6to4 Adapter", StringComparison.OrdinalIgnoreCase) >= 0))
continue;

this.StatusTextBox.AppendText("\r\n" + ni.Name + "\r\n");
foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses)
{
if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
// Console.WriteLine(ip.Address.ToString());
this.StatusTextBox.AppendText("\r\n" + ip.Address.ToString() + "\r\n");
}
}
}
}

}

}

}

 

1 Comment »

  1. i have display this message in dma radius connection report. download attachment please and suggest me

    i have install second drive only cts data

    On 12 April 2017 at 12:16, Syed Jahanzaib Personal Blog to Share Knowledge ! wrote:

    > Syed Jahanzaib / Pinochio~:) posted: ” Following are few snippets / tips > for C# used in various applications I made for personnel usage. Declare > Global Variables Check if app is already running, if yes, then inform > accordingly and EXIT the app ! C” >

    Like

    Comment by wifi lakhani — April 12, 2017 @ 9:12 PM


RSS feed for comments on this post. TrackBack URI

Leave a reply to wifi lakhani Cancel reply