A skype history message viewer written in c#
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

177 lines
5.6 KiB

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 SKYPE4COMLib;
namespace Skype_History_Viewer
{
public partial class FrmMain : Form
{
private Boolean connected = false;
private Skype skype = new Skype();
public FrmMain()
{
InitializeComponent();
connected = connectToSkype();
}
private void cmdAdd_Click(object sender, EventArgs e)
{
if(!connected)
{
errorMessage();
}
else
{
//displays the chat of selected user
String name = lstUsers.GetItemText(lstUsers.SelectedItem);
String display = "";
foreach (Chat oChat in skype.Chats)
{
foreach (ChatMessage oMessage in oChat.Messages)
{
if(oMessage.Sender.FullName.Equals(name))
{
if (chTime.Checked) display = oMessage.Timestamp.ToString() + " ";
if (chUser.Checked)
{
display += oMessage.Sender.FullName + " ";
}
display += oMessage.Body;
lstChat.Items.Add(display);
display = "";
}
}
}
}
}
private void errorMessage()
{
connected = connectToSkype();
if(!connected)
{
MessageBox.Show("Could not connect to skype, please make sure that skype is running and this plugin is allowed.");
}
}
private Boolean connectToSkype()
{
try
{
//attaches the program to skype
skype.Attach();
//adds all users to lstUsers
if(!connected)
{
foreach (User user in skype.Friends)
{
lstUsers.Items.Add(user.FullName);
}
}
return true;
}
catch
{
return false;
}
}
private void cmdExport_Click(object sender, EventArgs e)
{
if (!connected)
{
errorMessage();
}
else
{
String name = lstUsers.GetItemText(lstUsers.SelectedItem);
String path = saveFileDialog("Skype_History_" + name + ".txt");
if(path != null)
{
System.IO.StreamWriter file = new System.IO.StreamWriter(path);
String line = "";
foreach (Chat oChat in skype.Chats)
{
foreach (ChatMessage oMessage in oChat.Messages)
{
if(oMessage.Sender.FullName.Equals(name))
{
if (chTime.Checked) line = oMessage.Timestamp.ToString() + " ";
if (chUser.Checked) line += oMessage.Sender.FullName + " ";
line += oMessage.Body;
file.WriteLine(line);
line = "";
}
}
}
file.Close();
MessageBox.Show("Save Complete");
}
}
}
private void cmdExportAll_Click(object sender, EventArgs e)
{
if (!connected)
{
errorMessage();
}
else
{
String path = saveFileDialog("SkypeHistory.txt");
if(path != null) //makes sure that user did not click on cancle on save file dialog
{
System.IO.StreamWriter file = new System.IO.StreamWriter(path);
String line = "";
//exports all skype history to a text file
foreach (Chat oChat in skype.Chats)
{
foreach (ChatMessage oMessage in oChat.Messages)
{
if (chTime.Checked) line = oMessage.Timestamp.ToString() + " ";
if (chUser.Checked) line += oMessage.Sender.FullName + " ";
line += oMessage.Body;
file.WriteLine(line);
line = "";
}
}
file.Close();
MessageBox.Show("Save Complete");
}
}
}
private void cmdClear_Click(object sender, EventArgs e)
{
lstChat.Items.Clear();
}
private String saveFileDialog(String text)
{
SaveFileDialog saveFile = new SaveFileDialog();
saveFile.FileName = text;
saveFile.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
if(saveFile.ShowDialog() == DialogResult.OK)
{
return saveFile.FileName;
}
return null;
}
}
}