コード例 #1
0
        private void ProcessMessages(object sender, DoWorkEventArgs args)
        {
            if (sender == null)
            {
                return;
            }

            while (this.isRunning)
            {
                if (!wa.HasMessages())
                {
                    wa.PollMessages();
                    Thread.Sleep(100);
                    continue;
                }

                var tmpMessages = wa.GetAllMessages();
                (sender as BackgroundWorker).ReportProgress(1, tmpMessages);
            }
        }
コード例 #2
0
        private static void ProcessChat(WhatsApp wa, string dst)
        {
            var thRecv = new Thread(t =>
            {
                try
                {
                    while (wa != null)
                    {
                        if (!wa.HasMessages())
                        {
                            wa.PollMessages();
                            Thread.Sleep(100);
                            continue;
                        }
                        var buff = wa.GetAllMessages();
                    }
                }
                catch (ThreadAbortException)
                {
                }
            })
            {
                IsBackground = true
            };

            thRecv.Start();
            WhatsUserManager usrMan = new WhatsUserManager();
            var tmpUser             = usrMan.CreateUser(dst, "User");

            while (true)
            {
                string line = Console.ReadLine();
                if (line == null && line.Length == 0)
                {
                    continue;
                }

                string command = line.Trim();
                switch (command)
                {
                case "/query":
                    //var dst = dst//trim(strstr($line, ' ', FALSE));
                    PrintToConsole("[] Interactive conversation with {0}:", tmpUser);
                    break;

                case "/accountinfo":
                    PrintToConsole("[] Account Info: {0}", wa.GetAccountInfo().ToString());
                    break;

                case "/lastseen":
                    PrintToConsole("[] Request last seen {0}", tmpUser);
                    wa.RequestLastSeen(tmpUser.GetFullJid());
                    break;

                case "/exit":
                    wa = null;
                    thRecv.Abort();
                    return;

                case "/start":
                    wa.WhatsSendHandler.SendComposing(tmpUser.GetFullJid());
                    break;

                case "/pause":
                    wa.WhatsSendHandler.SendPaused(tmpUser.GetFullJid());
                    break;

                case "/register":
                {
                    RegisterAccount();
                    break;
                }

                default:
                    PrintToConsole("[] Send message to {0}: {1}", tmpUser, line);
                    wa.Message(tmpUser.GetFullJid(), line);
                    break;
                }
            }
        }