コード例 #1
0
        /// <summary>
        /// Entry method.
        /// </summary>
        /// <param name="args">arguments</param>
        public static void Main(string[] args)
        {
            COMReceiver.GetInstance().DeleteAllMessages();

            EventSender.GetInstance().StartConnection(ServerInformation.LOCAL_HOST, ServerInformation.DEFAULT_PORT);

            /* Get input from COM */
            COMReceiver.GetInstance().StartReceivingMessages();

            /* Get WebPage URL from IE */
            WebPageWatcher.GetInstance().StartMonitoring();

            /* Monitors files */
            //GeneralFileWatcher.GetInstance().Start();
            FileMonitor.GetInstance().StartMonitoring();

            /* Monitors Apps/Programs */
            ProgramWatcher.GetInstance().StartMonitoring();

            /* Monitors Folder/Directories */
            FolderMonitor.GetInstance().StartMonitoring();

            // Monitor emails
            EmailMonitor.GetInstance().StartMonitoring();

            while (active)
            {
                // runs indefinitely until terminated by user via task manager
            }
        }
コード例 #2
0
        /// <summary>
        /// Event handler used to constantly retrieve messages from the MSMQ.
        /// </summary>
        /// <param name="sender">the sender object</param>
        /// <param name="e">the event arguments</param>
        private void queue_ReceiveCompleted(object sender, ReceiveCompletedEventArgs e)
        {
            //recieve the messages..
            Message m = queue.EndReceive(e.AsyncResult);

            m.Formatter = new XmlMessageFormatter(new string[] { "System.String,mscorlib" });

            String receivedMessage = (string)m.Body;

            String[] splittedMessage = receivedMessage.Split('|');
            if (splittedMessage[0].Equals("OUTLOOK"))
            {
                EmailMonitor.GetInstance().ProcessEmailEvent(receivedMessage);
            }
            else
            {
                MSOFFICEFileWatcher.GetInstance().FileViewed(receivedMessage);
            }

            //once get them - send to them to consuming client
            EventSender.GetInstance().ProcessMessage((string)m.Body);

            //recieve again
            StartReceivingMessages();
        }
コード例 #3
0
        /// <summary>
        /// Start the polling process.
        /// </summary>
        public void Start()
        {
            if (visitedFolders.Count != 0)
            {//if it gets here - a folder is opened
                if (!visitedFolders.Peek().Equals(folder.LocationURL))
                {
                    visitedFolders.Push(folder.LocationURL);

                    String message = ResourceIdentifiers.FOLDER_IDENTIFIER + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                                     + folder.LocationName + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                                     + folder.LocationURL + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                                     + FolderMonitor.FOLDER_VIEW + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                                     + DateTime.Now;

                    EventSender.GetInstance().ProcessMessage(message);
                }
            }
            else
            {//can get here once - at folder start up
                visitedFolders.Push(folder.LocationURL);

                String message = ResourceIdentifiers.FOLDER_IDENTIFIER + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                                 + folder.LocationName + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                                 + folder.LocationURL + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                                 + FolderMonitor.FOLDER_VIEW + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                                 + DateTime.Now;


                EventSender.GetInstance().ProcessMessage(message);
            }
        }
コード例 #4
0
        /// <summary>
        /// Event handler to handle folder deletion.
        /// </summary>
        /// <param name="sender">triggered source</param>
        /// <param name="e">event arguments</param>
        private void watcher_Deleted(object sender, FileSystemEventArgs e)
        {
            String message = ResourceIdentifiers.FOLDER_IDENTIFIER + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                             e.Name + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                             e.FullPath + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                             FOLDER_DELETION + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                             DateTime.Now;

            EventSender.GetInstance().ProcessMessage(message);
        }
コード例 #5
0
        /// <summary>
        /// Event handler to handle folder renamed.
        /// </summary>
        /// <param name="sender">triggered source</param>
        /// <param name="e">event arguments</param>
        private void watcher_Renamed(object sender, RenamedEventArgs e)
        {
            String message = ResourceIdentifiers.FOLDER_IDENTIFIER + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                             e.Name + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                             e.FullPath + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                             FOLDER_RENAME + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +     //still need old name/path
                             DateTime.Now;

            EventSender.GetInstance().ProcessMessage(message);
        }
コード例 #6
0
        /// <summary>
        /// Event handler to handle file changed.
        /// </summary>
        /// <param name="sender">triggered source</param>
        /// <param name="e">event arguments</param>
        private static void watcher_Changed(object sender, FileSystemEventArgs e)
        {
            String message = ResourceIdentifiers.FILE_IDENTIFIER + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                             + e.Name + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                             + e.FullPath + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                             + FileMonitor.CHANGE_ACTION + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                             + DateTime.Now;

            EventSender.GetInstance().ProcessMessage(message);
        }
コード例 #7
0
 /// <summary>
 /// Event handler to handle folder created.
 /// </summary>
 /// <param name="sender">triggered source</param>
 /// <param name="e">event arguments</param>
 private void watcher_Created(object sender, FileSystemEventArgs e)
 {
     if (Directory.Exists(e.FullPath))
     {
         String message = ResourceIdentifiers.FOLDER_IDENTIFIER + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                          e.Name + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                          e.FullPath + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                          FOLDER_CREATE + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                          DateTime.Now;
         EventSender.GetInstance().ProcessMessage(message);
     }
 }
コード例 #8
0
        /// <summary>
        /// File view for MS FILES.. (WORD/EXCEL/POWERPOINT/VISIO/PROJECT)
        /// </summary>
        /// <param name="eventmessage"></param>
        public void FileViewed(String eventmessage)
        {
            String[] spliitedMessage = eventmessage.Split('|');

            //String filename = spliitedMessage[1]

            String message = ResourceIdentifiers.FILE_IDENTIFIER + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                             spliitedMessage[1] + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                             FileMonitor.VIEW_ACTION + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                             spliitedMessage[2];

            EventSender.GetInstance().ProcessMessage(message);
        }
コード例 #9
0
        /// <summary>
        /// Event handler to handle file renamed.
        /// </summary>
        /// <param name="sender">triggered source</param>
        /// <param name="e">event arguments</param>
        private static void watcher_Renamed(object sender, RenamedEventArgs e)
        {
            String message = ResourceIdentifiers.FILE_IDENTIFIER + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                             + e.Name + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                             + e.FullPath + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                             + FileMonitor.RENAME_ACTION + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                             + DateTime.Now  // also record old path/name
                             + Constants.SPACE + Constants.SPLITTER + Constants.SPACE + e.OldFullPath
                             + Constants.SPACE + Constants.SPLITTER + Constants.SPACE + e.OldName;



            EventSender.GetInstance().ProcessMessage(message);
        }
コード例 #10
0
        /// <summary>
        /// Helper callback method for use of the timer object in order to poll.
        /// </summary>
        /// <param name="temp">needed argument</param>
        private void WatchProgram(object temp)
        {
            Console.WriteLine("Start");
            //Check new process opening
            foreach (Process P in Process.GetProcesses())
            {
                if (P.MainWindowTitle.Length > 0)
                {
                    try
                    {
                        if (!runningProgramList.Contains(P.ProcessName))
                        {
                            try
                            {
                                runningProgramList.Add(P.ProcessName);
                                procList.Add(P);
                            }
                            catch (Exception e)
                            {
                            }//swallow

                            String message = ResourceIdentifiers.PROGRAM_IDENTIFIER + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                                             + P.ProcessName + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                                             + P.MainWindowTitle + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                                             + P.ToString() + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                                             + P.MainModule.FileName + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                                             + DateTime.Now;

                            EventSender.GetInstance().ProcessMessage(message);
                        }
                    }
                    catch (Exception e)
                    {
                    }//swallow
                }
            }
        }
コード例 #11
0
        /// <summary>
        /// Process the email event once got it.
        /// </summary>
        /// <param name="eventmessage">the message</param>
        public void ProcessEmailEvent(String eventmessage)
        {
            String[] spliitedMessage = eventmessage.Split('|');

            if (spliitedMessage.Length == 3)
            {
                String message = "EMAIL4" + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                                 spliitedMessage[1] + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                                 spliitedMessage[2];

                EventSender.GetInstance().ProcessMessage(message);
            }
            else
            {
                String message = "EMAIL4" + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                                 spliitedMessage[1] + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                                 spliitedMessage[2] + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                                 spliitedMessage[3] + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                                 spliitedMessage[4] + Constants.SPACE + Constants.SPLITTER + Constants.SPACE +
                                 spliitedMessage[5];

                EventSender.GetInstance().ProcessMessage(message);
            }
        }
コード例 #12
0
        /// <summary>
        /// A private helper method to be called and what it does is that it gets the URL of
        /// the Microsoft Internet Explorer address bar.
        /// </summary>
        /// <param name="temp">an object to be passed in</param>
        private void CheckIEURL(object temp)
        {
            foreach (SHDocVw.InternetExplorer ie in shellwindow)
            {
                fileName = Path.GetFileNameWithoutExtension(ie.FullName.ToLower());

                /* Its Internet Explorer */
                if (fileName.Equals(InternetExplorerIdentifier))
                {
                    if (!urls.Contains(ie.LocationURL))
                    {
                        urls.Add(ie.LocationURL);


                        String message = ResourceIdentifiers.WEBPAGE_IDENTIFIER + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                                         + ie.LocationURL + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                                         + ie.LocationName + Constants.SPACE + Constants.SPLITTER + Constants.SPACE
                                         + DateTime.Now;

                        EventSender.GetInstance().ProcessMessage(message);
                    }
                }
            }
        }