using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using WechatPCMsgBakTool.Helpers; using WechatPCMsgBakTool.Interface; using WechatPCMsgBakTool.Model; namespace WechatPCMsgBakTool { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { public string UserMsgPath { get; set; } = ""; public MainWindow() { InitializeComponent(); } private void select_user_msg_path_Click(object sender, RoutedEventArgs e) { if (Directory.Exists(txt_user_msg_path.Text)) { UserMsgPath = txt_user_msg_path.Text; if (UserMsgPath.Substring(UserMsgPath.Length - 1, 1) == "\\") { UserMsgPath = UserMsgPath.Substring(0, UserMsgPath.Length - 1); } //判定数据目录是否存在 if (Directory.Exists(UserMsgPath + "\\Msg")) { //MessageBox.Show("微信目录存在"); } //复制数据DB WechatDBHelper.CreateUserWorkPath(UserMsgPath); string err = WechatDBHelper.MoveUserData(UserMsgPath); if(err != "") { MessageBox.Show(err); return; } else { MessageBox.Show("用户目录创建成功,请打开PC微信并登录,获取数据库秘钥解密"); } } } private void decryption_user_msg_db_Click(object sender, RoutedEventArgs e) { byte[]? key = DecryptionHelper.GetWechatKey(); if(key == null) { MessageBox.Show("微信密钥获取失败,请检查微信是否打开,或者版本不兼容"); return; } WechatDBHelper.DecryUserData(key); MessageBox.Show("解密完成,请点击读取数据"); } WXReader? Reader = null; private void read_user_msg_db_Click(object sender, RoutedEventArgs e) { list_sessions.Items.Clear(); if (cb_use_local_decdb.IsChecked == true) { DBInfo info = WechatDBHelper.GetDBinfoOnLocal(txt_user_msg_path.Text); Reader = new WXReader(info); } else { Reader = new WXReader(); } List? sessions = new List(); sessions = Reader.GetWXSessions(); if (sessions == null) { MessageBox.Show("咩都厶啊"); return; } foreach (WXSession session in sessions) { list_sessions.Items.Add(session); } } private bool loading = false; private bool end = false; private void ScrollViewer_ScrollChanged(object sender, ScrollChangedEventArgs e) { if (sender == null) return; ScrollViewer scrollViewer = (ScrollViewer)sender; if (scrollViewer.ScrollableHeight == 0) return; if (scrollViewer.ScrollableHeight - scrollViewer.ContentVerticalOffset < 10) { if (!loading && !end) { loading = true; //GetMsg(); } } } private void list_sessions_MouseDoubleClick(object sender, MouseButtonEventArgs e) { } private void export_record_Click(object sender, RoutedEventArgs e) { WXSession selectItem = (WXSession)list_sessions.SelectedValue; if (selectItem != null) { IExport export = new HtmlExport(); export.InitTemplate(selectItem); if(Reader == null) { MessageBox.Show("请先读取用户数据"); return; } export.SetMsg(Reader, selectItem); export.SetEnd(); string path = Reader.GetSavePath(selectItem); export.Save(path); MessageBox.Show("导出完成"); } } private void find_session_person_Click(object sender, RoutedEventArgs e) { list_sessions.Items.Clear(); if (Reader == null) Reader = new WXReader(); List? sessions = new List(); sessions = Reader.GetUser(txt_find_session.Text); if (sessions == null) { MessageBox.Show("咩都厶啊"); return; } foreach (WXContact session in sessions) { WXSession session1 = new WXSession(); session1.NickName = session.NickName; session1.UserName = session.UserName; list_sessions.Items.Add(session1); } } } }