質問

私はWinformsアプリを作成しようとしています。ファイルを検索することを可能にします。これには、テキストボックスに書かれた文字列(win+fを押します;あなたが理解しています;))このアプリには、ファイルとディレクトリのリストがあります。この文字列を検索しました

これらのファイルはほとんどが.docと.xlsです。ドキュメントでの検索は簡単かもしれないと思いますが、Excelファイルでは、セルがnotepad ++でそれらを開くことでそれらのファイルを「読み取ろうとした異なるエンコーディングを持つことができます。ラテン文字のみを持つセルは簡単に見つけることができましたが、ポーランド語の文字を持つ人は2バイトのエンコードを持っていました

検索に組み込まれているWindowsに問題はありませんでしたが、一部のテストファイルにはポーランドの特殊文字を含む私の文字列があることがわかりました。

だから私の質問は基本的に、私のアプリにこのWindows内蔵の検索エンジンを使用する方法がある場合(私が書いたように、私はファイル名のみを見つける必要があります)、あるいはあなたが他のアイデアを持っているかもしれません、私は単純なものを書く方法を持っていますマルチファイル検索?

役に立ちましたか?

解決

おそらく使用したいのです Windows検索SDK.

他のヒント

コードのWindows検索と対話することができ、複数のファイルタイプの検索を重視することができます。詳細については、このMSDNの記事を参照してください。

http://msdn.microsoft.com/en-us/library/bb266517%28v = vs.85%29.aspx

このWebサイトを使用してチェックしてください WindowsインデックスAPI. 。 ASP.NETを指しますが、コードはC#にあります。

以下のスニペット:

            string  QueryText = "asp alliance"; //The search string
            string CatalogName = "searchcatalog"; //The name of your Index Server catalog
            int NumberOfSearchResults = 0;  
            DataSet SearchResults = new DataSet();  

            //Prevent SQL injection attacks - further security measures are recommended  
            QueryText = QueryText.Replace("'", "''");  

            //Build the search query  
            string SQL = "SELECT doctitle, vpath, Path, Write, Size, Rank ";  
            SQL += "FROM \"" + CatalogName + "\"..SCOPE() ";  
            SQL += "WHERE";  
            SQL += " CONTAINS(Contents, '" + QueryText + "') ";  
            SQL += "AND NOT CONTAINS(Path, '\"_vti_\"') ";  
            SQL += "AND NOT CONTAINS(FileName, '\".ascx\" OR \".config\" OR \".css\"') ";  
            SQL += "ORDER BY Rank DESC";  

            //Connect to Index Server and perform search query  
            try   
            {  
                OleDbConnection IndexServerConnection = new OleDbConnection("Provider=msidxs;");  
                OleDbCommand dbCommand = new OleDbCommand(SQL, IndexServerConnection);  

                OleDbDataAdapter IndexServerDataAdapter = new OleDbDataAdapter();  
                IndexServerDataAdapter.SelectCommand = dbCommand;  

                IndexServerDataAdapter.Fill(SearchResults);  
                NumberOfSearchResults = SearchResults.Tables[0].Rows.Count;  
            }  
            catch (Exception ExceptionObject)  
            {  
                //Query failed so display an error message  
                NumberOfSearchResults = 0;  
                LabelNumberOfResults.Text = "Problem with retrieving search results due to: " + ExceptionObject.Message;  
                DataGridSearchResults.Visible = false;  

            }  
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top