Message Center
How to send a message with C#
Step 1. Creat a windows form project Message
Step 2. Create form with the following values
rdoAllUsers - "All Currently Logged in users" - radio button
rdoCertainUser - "Certain user:" - radio button
txtUser - textbox for user information
Delay
rdoNoDelay - "Without delay (until user confirms 'OK') - radio button
rdoSendWithDelay - radio button
UD1 - up down control with inital value of 60.
Destination
rdoSendToAll - radio button
rdoSendToSingle - radio button
lstComputers - listbox
Message
txtMessage - text box multiline max length 125.
lblClearMEssage - clears message
lblCharLeft - number of characters left
btnAbout - Button
btnExit - Exit application
btnSend- Send message button
statusStrip1
-add label to status strip - toolStripStatusLabel1
code for frmMain.cs
using System;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.Windows.Forms;using System.DirectoryServices;using System.IO;using System.Diagnostics;
namespace Message{ public partial class frmMain : Form { public frmMain() { InitializeComponent(); toolStripStatusLabel1.Text = ""; rdoNoDelay.Checked = true; rdoAllUsers.Checked = true; rdoSendToAll.Checked = true; } private void frmMain_Load(object sender, EventArgs e) { DirectoryEntry entry = new DirectoryEntry("LDAP://dc=domain,dc=local"); DirectorySearcher mySearcher = new DirectorySearcher(entry); mySearcher.Filter = ("(objectClass=computer)"); mySearcher.SizeLimit = int.MaxValue; mySearcher.PageSize = int.MaxValue; foreach (SearchResult resEnt in mySearcher.FindAll()) { string ComputerName = resEnt.GetDirectoryEntry().Name; if (ComputerName.StartsWith("CN=")) ComputerName = ComputerName.Remove(0, "CN=".Length); lstComputers.Items.Add(ComputerName); } lstComputers.Sorted = true; mySearcher.Dispose(); entry.Dispose(); }
private void lstComputers_SelectedIndexChanged(object sender, EventArgs e) { toolStripStatusLabel1.Text = "Sending messages to: " + " " + lstComputers.SelectedItem.ToString(); }
private void btnExit_Click(object sender, EventArgs e) { Application.Exit(); }
private void btnSend_Click(object sender, EventArgs e) { String msgStr = "ds"; string sndTo; decimal sendTime; string sndToComp; if(txtMessage.Text.Length < 1) { MessageBox.Show("Must Enter a Message to send!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); txtMessage.Focus(); return; } if (ClsMsg.SendToAllUsers) { sndTo = "*"; } else { if (txtUser.Text.Length > 1) { sndTo = txtUser.Text; } else { MessageBox.Show("Enter Value for user to send to"); txtUser.Focus(); return; } } if (ClsMsg.SendWithDelay) { sendTime = UD1.Value; } else { sendTime = 0; }
if (ClsMsg.SendToAll) { sndToComp = "*"; } else { sndToComp = lstComputers.SelectedItem.ToString(); }
if (LocateMsgExe(out string strMsgPath)) { const string quote = "\""; string msg = quote + txtMessage.Text + quote; msgStr = sndTo +" " + " /Server:" + sndToComp + " " + "/Time:" + sendTime + " " + msg; Process.Start(strMsgPath, msgStr); toolStripStatusLabel1.Text = "Message sent to " + sndToComp + " At " + DateTime.Now; } }
public static bool LocateMsgExe(out string returnedMsgPath) { returnedMsgPath = null; string[] msgPaths = new string[] { Environment.ExpandEnvironmentVariables(@"%windir%\system32\msg.exe"), Environment.ExpandEnvironmentVariables(@"%windir%\sysnative\msg.exe") };
foreach (string msgPath in msgPaths) { if (File.Exists(msgPath)) { returnedMsgPath = msgPath; return true; } }
return false; }
private void rdoAllUsers_CheckedChanged(object sender, EventArgs e) { txtUser.Text = ""; txtUser.Enabled = false; ClsMsg.SendToAllUsers = true;
}
private void rdoCertainUser_CheckedChanged(object sender, EventArgs e) { txtUser.Enabled = true; ClsMsg.SendToAllUsers = false; }
private void rdoNoDelay_CheckedChanged(object sender, EventArgs e) { UD1.Enabled = false; ClsMsg.SendWithDelay = false; }
private void rdoSendWithDelay_CheckedChanged(object sender, EventArgs e) { UD1.Enabled = true; ClsMsg.SendWithDelay = true;
}
private void UD1_ValueChanged(object sender, EventArgs e) { ClsMsg.DelayTime = UD1.Value; }
private void rdoSendToAll_CheckedChanged(object sender, EventArgs e) { lstComputers.Enabled = false; ClsMsg.SendToAll = true;
}
private void rdoSendToSingle_CheckedChanged(object sender, EventArgs e) { ClsMsg.SendToAll = false; lstComputers.Enabled = true; }
private void lblClearMessage_Click(object sender, EventArgs e) { txtMessage.Text = "";
}
private void txtMessage_TextChanged(object sender, EventArgs e) { lblCharLeft.Text = 125 - txtMessage.Text.Length + " Characters Left";
}
private void btnAbout_Click(object sender, EventArgs e) { MessageBox.Show("Created By Mandy"); } }} And create a Class named clsMsg using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;
namespace Message{ public static class ClsMsg { public static bool SendToAllUsers { get; set; } public static decimal DelayTime { get; set; } public static bool SendWithDelay { get; set; } public static bool SendToAll { get; set; } public static bool SendToOne { get; set; } public static string ComputerName { get; set; }
}}
namespace Message{ public partial class frmMain : Form { public frmMain() { InitializeComponent(); toolStripStatusLabel1.Text = ""; rdoNoDelay.Checked = true; rdoAllUsers.Checked = true; rdoSendToAll.Checked = true; } private void frmMain_Load(object sender, EventArgs e) { DirectoryEntry entry = new DirectoryEntry("LDAP://dc=domain,dc=local"); DirectorySearcher mySearcher = new DirectorySearcher(entry); mySearcher.Filter = ("(objectClass=computer)"); mySearcher.SizeLimit = int.MaxValue; mySearcher.PageSize = int.MaxValue; foreach (SearchResult resEnt in mySearcher.FindAll()) { string ComputerName = resEnt.GetDirectoryEntry().Name; if (ComputerName.StartsWith("CN=")) ComputerName = ComputerName.Remove(0, "CN=".Length); lstComputers.Items.Add(ComputerName); } lstComputers.Sorted = true; mySearcher.Dispose(); entry.Dispose(); }
private void lstComputers_SelectedIndexChanged(object sender, EventArgs e) { toolStripStatusLabel1.Text = "Sending messages to: " + " " + lstComputers.SelectedItem.ToString(); }
private void btnExit_Click(object sender, EventArgs e) { Application.Exit(); }
private void btnSend_Click(object sender, EventArgs e) { String msgStr = "ds"; string sndTo; decimal sendTime; string sndToComp; if(txtMessage.Text.Length < 1) { MessageBox.Show("Must Enter a Message to send!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); txtMessage.Focus(); return; } if (ClsMsg.SendToAllUsers) { sndTo = "*"; } else { if (txtUser.Text.Length > 1) { sndTo = txtUser.Text; } else { MessageBox.Show("Enter Value for user to send to"); txtUser.Focus(); return; } } if (ClsMsg.SendWithDelay) { sendTime = UD1.Value; } else { sendTime = 0; }
if (ClsMsg.SendToAll) { sndToComp = "*"; } else { sndToComp = lstComputers.SelectedItem.ToString(); }
if (LocateMsgExe(out string strMsgPath)) { const string quote = "\""; string msg = quote + txtMessage.Text + quote; msgStr = sndTo +" " + " /Server:" + sndToComp + " " + "/Time:" + sendTime + " " + msg; Process.Start(strMsgPath, msgStr); toolStripStatusLabel1.Text = "Message sent to " + sndToComp + " At " + DateTime.Now; } }
public static bool LocateMsgExe(out string returnedMsgPath) { returnedMsgPath = null; string[] msgPaths = new string[] { Environment.ExpandEnvironmentVariables(@"%windir%\system32\msg.exe"), Environment.ExpandEnvironmentVariables(@"%windir%\sysnative\msg.exe") };
foreach (string msgPath in msgPaths) { if (File.Exists(msgPath)) { returnedMsgPath = msgPath; return true; } }
return false; }
private void rdoAllUsers_CheckedChanged(object sender, EventArgs e) { txtUser.Text = ""; txtUser.Enabled = false; ClsMsg.SendToAllUsers = true;
}
private void rdoCertainUser_CheckedChanged(object sender, EventArgs e) { txtUser.Enabled = true; ClsMsg.SendToAllUsers = false; }
private void rdoNoDelay_CheckedChanged(object sender, EventArgs e) { UD1.Enabled = false; ClsMsg.SendWithDelay = false; }
private void rdoSendWithDelay_CheckedChanged(object sender, EventArgs e) { UD1.Enabled = true; ClsMsg.SendWithDelay = true;
}
private void UD1_ValueChanged(object sender, EventArgs e) { ClsMsg.DelayTime = UD1.Value; }
private void rdoSendToAll_CheckedChanged(object sender, EventArgs e) { lstComputers.Enabled = false; ClsMsg.SendToAll = true;
}
private void rdoSendToSingle_CheckedChanged(object sender, EventArgs e) { ClsMsg.SendToAll = false; lstComputers.Enabled = true; }
private void lblClearMessage_Click(object sender, EventArgs e) { txtMessage.Text = "";
}
private void txtMessage_TextChanged(object sender, EventArgs e) { lblCharLeft.Text = 125 - txtMessage.Text.Length + " Characters Left";
}
private void btnAbout_Click(object sender, EventArgs e) { MessageBox.Show("Created By Mandy"); } }} And create a Class named clsMsg using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;
namespace Message{ public static class ClsMsg { public static bool SendToAllUsers { get; set; } public static decimal DelayTime { get; set; } public static bool SendWithDelay { get; set; } public static bool SendToAll { get; set; } public static bool SendToOne { get; set; } public static string ComputerName { get; set; }
}}