static void doSearch(Object state)
        {
            SearchObjectState sos = (SearchObjectState)state;

            if (sos.SearchString == string.Empty)
            {
                sos.Reset.Set();
                return;
            }
            cHelper = cManager.GetCatalog("SYSTEMINDEX").GetQueryHelper();
            cHelper.QuerySelectColumns = "\"System.ItemNameDisplay\",\"System.ItemPathDisplay\"";

            try
            {
                using (cConnection = new OleDbConnection(
                           cHelper.ConnectionString))
                {
                    cConnection.Open();
                    using (OleDbCommand cmd = new OleDbCommand(
                               cHelper.GenerateSQLFromUserQuery(
                                   sos.SearchString
                                   ),
                               cConnection))
                    {
                        if (cConnection.State == ConnectionState.Open)
                        {
                            using (OleDbDataReader reader = cmd.ExecuteReader())
                            {
                                m_results.Clear();
                                IsWorkingFlag = true;

                                while (!reader.IsClosed && reader.Read())
                                {
                                    m_results.Add(new SearchResult()
                                    {
                                        Name = reader[0].ToString(), Path = reader[1].ToString()
                                    });
                                    if (ToAbortFlag)
                                    {
                                        break;
                                    }
                                }
                                reader.Close();

                                IsWorkingFlag = false;
                            }
                        }
                    }
                    // TODO: Investigate possible RaceOnRCWCleanup exception.
                    cConnection.Close();
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex);
            }

            sos.Reset.Set();
            ToAbortFlag = false;
        }
예제 #2
0
        static void doSearch(object state)
        {
            // check if user wants to show file extensions. always show on windows < 8 due to property missing
            string      displayNameColumn = "System.ItemNameDisplayWithoutExtension";
            RegistryKey hideFileExt       = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", false);
            object      hideFileExtValue  = hideFileExt?.GetValue("HideFileExt");

            if ((hideFileExtValue != null && hideFileExtValue.ToString() == "0") || !Interop.Shell.IsWindows8OrBetter)
            {
                displayNameColumn = "System.ItemNameDisplay";
            }

            SearchObjectState sos = (SearchObjectState)state;

            if (sos.SearchString == string.Empty)
            {
                m_results.Clear();
                sos.Reset.Set();
                return;
            }
            cHelper = cManager.GetCatalog("SYSTEMINDEX").GetQueryHelper();
            cHelper.QuerySelectColumns = "\"" + displayNameColumn + "\",\"System.ItemUrl\",\"System.ItemPathDisplay\",\"System.DateModified\"";
            cHelper.QueryMaxResults    = MAX_RESULT;
            cHelper.QuerySorting       = "System.Search.Rank desc";

            OleDbConnection cConnection;

            try
            {
                using (cConnection = new OleDbConnection(
                           cHelper.ConnectionString))
                {
                    cConnection.Open();
                    using (OleDbCommand cmd = new OleDbCommand(
                               cHelper.GenerateSQLFromUserQuery(
                                   sos.SearchString
                                   ),
                               cConnection))
                    {
                        if (cConnection.State == ConnectionState.Open)
                        {
                            using (OleDbDataReader reader = cmd.ExecuteReader())
                            {
                                m_results.Clear();
                                IsWorkingFlag = true;

                                while (!reader.IsClosed && reader.Read())
                                {
                                    if (ToAbortFlag)
                                    {
                                        break;
                                    }

                                    SearchResult result = new SearchResult()
                                    {
                                        Name = reader[0].ToString(), Path = reader[1].ToString(), PathDisplay = reader[2].ToString(), DateModified = reader[3].ToString()
                                    };

                                    if (result.Name.EndsWith(".lnk"))
                                    {
                                        result.Name = result.Name.Substring(0, result.Name.Length - 4); // Windows always hides this regardless of setting, so do it
                                    }
                                    m_results.Add(result);
                                }

                                IsWorkingFlag = false;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                CairoLogger.Instance.Error("Error in doSearch.", ex);
            }

            sos.Reset.Set();
            ToAbortFlag = false;
        }
예제 #3
0
        static void doSearch(Object state)
        {
            SearchObjectState sos = (SearchObjectState)state;

            if (sos.SearchString == string.Empty)
            {
                m_results.Clear();
                sos.Reset.Set();
                return;
            }
            cHelper = cManager.GetCatalog("SYSTEMINDEX").GetQueryHelper();
            cHelper.QuerySelectColumns = "\"System.ItemNameDisplay\",\"System.ItemUrl\",\"System.ItemPathDisplay\",\"System.DateModified\"";
            cHelper.QueryMaxResults    = MAX_RESULT;
            cHelper.QuerySorting       = "System.Search.Rank desc";

            OleDbConnection cConnection;

            try
            {
                using (cConnection = new OleDbConnection(
                           cHelper.ConnectionString))
                {
                    cConnection.Open();
                    using (OleDbCommand cmd = new OleDbCommand(
                               cHelper.GenerateSQLFromUserQuery(
                                   sos.SearchString
                                   ),
                               cConnection))
                    {
                        if (cConnection.State == ConnectionState.Open)
                        {
                            using (OleDbDataReader reader = cmd.ExecuteReader())
                            {
                                m_results.Clear();
                                IsWorkingFlag = true;

                                while (!reader.IsClosed && reader.Read())
                                {
                                    if (ToAbortFlag)
                                    {
                                        break;
                                    }

                                    SearchResult result = new SearchResult()
                                    {
                                        Name = reader[0].ToString(), Path = reader[1].ToString(), PathDisplay = reader[2].ToString(), DateModified = reader[3].ToString()
                                    };
                                    m_results.Add(result);
                                }

                                IsWorkingFlag = false;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex);
            }

            sos.Reset.Set();
            ToAbortFlag = false;
        }