⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filter.cs

📁 小型搜索软件的源代码
💻 CS
字号:
using System;
using System.Runtime.InteropServices;
using System.Text;

namespace ShootSearch.IFilter
{
	[Flags]
	public enum IFILTER_INIT : uint
	{
		NONE                   = 0,
		CANON_PARAGRAPHS       = 1,
		HARD_LINE_BREAKS       = 2,
		CANON_HYPHENS          = 4,
		CANON_SPACES           = 8,
		APPLY_INDEX_ATTRIBUTES = 16,
		APPLY_CRAWL_ATTRIBUTES = 256,
		APPLY_OTHER_ATTRIBUTES = 32,
		INDEXING_ONLY          = 64,
		SEARCH_LINKS           = 128,       
		FILTER_OWNED_VALUE_OK  = 512
	}

	public enum CHUNK_BREAKTYPE
	{
		CHUNK_NO_BREAK = 0,
		CHUNK_EOW      = 1,
		CHUNK_EOS      = 2,
		CHUNK_EOP      = 3,
		CHUNK_EOC      = 4
	}

	[Flags]
	public enum CHUNKSTATE
	{
		CHUNK_TEXT               = 0x1,
		CHUNK_VALUE              = 0x2,
		CHUNK_FILTER_OWNED_VALUE = 0x4
	}

	[StructLayout(LayoutKind.Sequential)]
	public struct PROPSPEC
	{
		public uint ulKind;
		public uint propid;
		public IntPtr lpwstr;
	}

	[StructLayout(LayoutKind.Sequential)]
	public struct FULLPROPSPEC
	{
		public Guid guidPropSet;
		public PROPSPEC psProperty;
	}

	[StructLayout(LayoutKind.Sequential)]
	public struct STAT_CHUNK
	{
		public uint  idChunk;
		[MarshalAs(UnmanagedType.U4)]
		public CHUNK_BREAKTYPE breakType;
		[MarshalAs(UnmanagedType.U4)]
		public CHUNKSTATE flags;
		public uint locale;
		[MarshalAs(UnmanagedType.Struct)] public FULLPROPSPEC attribute;
		public uint idChunkSource;
		public uint cwcStartSource;
		public uint cwcLenSource;
	}

	[StructLayout(LayoutKind.Sequential)]
	public struct FILTERREGION
	{
		public uint idChunk;
		public uint cwcStart;
		public uint cwcExtent;
	}

	[ComImport]
	[Guid("89BCB740-6119-101A-BCB7-00DD010655AF")]
	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
	public interface IFilter
	{
		void Init([MarshalAs(UnmanagedType.U4)] IFILTER_INIT grfFlags, uint cAttributes, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=1)] FULLPROPSPEC[] aAttributes, ref uint pdwFlags);
		[PreserveSig] int GetChunk(out STAT_CHUNK pStat);
		[PreserveSig] int GetText(ref uint pcwcBuffer, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder buffer);
		void GetValue(ref UIntPtr ppPropValue);
		void BindRegion([MarshalAs(UnmanagedType.Struct)]FILTERREGION origPos, ref Guid riid, ref UIntPtr ppunk);
	}

	[ComImport]
	[Guid("f07f3920-7b8c-11cf-9be8-00aa004b9986")]
	public class CFilter
	{
	}

	public class Constants
	{
		public const uint PID_STG_DIRECTORY               =0x00000002;
		public const uint PID_STG_CLASSID                 =0x00000003;
		public const uint PID_STG_STORAGETYPE             =0x00000004;
		public const uint PID_STG_VOLUME_ID               =0x00000005;
		public const uint PID_STG_PARENT_WORKID           =0x00000006;
		public const uint PID_STG_SECONDARYSTORE          =0x00000007;
		public const uint PID_STG_FILEINDEX               =0x00000008;
		public const uint PID_STG_LASTCHANGEUSN           =0x00000009;
		public const uint PID_STG_NAME                    =0x0000000a;
		public const uint PID_STG_PATH                    =0x0000000b;
		public const uint PID_STG_SIZE                    =0x0000000c;
		public const uint PID_STG_ATTRIBUTES              =0x0000000d;
		public const uint PID_STG_WRITETIME               =0x0000000e;
		public const uint PID_STG_CREATETIME              =0x0000000f;
		public const uint PID_STG_ACCESSTIME              =0x00000010;
		public const uint PID_STG_CHANGETIME              =0x00000011;
		public const uint PID_STG_CONTENTS                =0x00000013;
		public const uint PID_STG_SHORTNAME               =0x00000014;
		public const int  FILTER_E_END_OF_CHUNKS          =(unchecked((int)0x80041700));
		public const int  FILTER_E_NO_MORE_TEXT           =(unchecked((int)0x80041701));
		public const int  FILTER_E_NO_MORE_VALUES         =(unchecked((int)0x80041702));
		public const int  FILTER_E_NO_TEXT                =(unchecked((int)0x80041705));
		public const int  FILTER_E_NO_VALUES              =(unchecked((int)0x80041706));
		public const int  FILTER_S_LAST_TEXT              =(unchecked((int)0x00041709));
	}

	/// <summary> 
	/// IFilter return codes 
	/// </summary> 
	public enum IFilterReturnCodes : uint 
	{ 
		/// <summary> 
		/// Success 
		/// </summary> 
		S_OK = 0, 
		/// <summary> 
		/// The function was denied access to the filter file.  
		/// </summary> 
		E_ACCESSDENIED = 0x80070005, 
		/// <summary> 
		/// The function encountered an invalid handle, probably due to a low-memory situation.  
		/// </summary> 
		E_HANDLE = 0x80070006, 
		/// <summary> 
		/// The function received an invalid parameter. 
		/// </summary> 
		E_INVALIDARG = 0x80070057, 
		/// <summary> 
		/// Out of memory 
		/// </summary> 
		E_OUTOFMEMORY = 0x8007000E, 
		/// <summary> 
		/// Not implemented 
		/// </summary> 
		E_NOTIMPL = 0x80004001, 
		/// <summary> 
		/// Unknown error 
		/// </summary> 
		E_FAIL = 0x80000008, 
		/// <summary> 
		/// File not filtered due to password protection 
		/// </summary> 
		FILTER_E_PASSWORD = 0x8004170B, 
		/// <summary> 
		/// The document format is not recognised by the filter 
		/// </summary> 
		FILTER_E_UNKNOWNFORMAT = 0x8004170C, 
		/// <summary> 
		/// No text in current chunk 
		/// </summary> 
		FILTER_E_NO_TEXT = 0x80041705, 
		/// <summary> 
		/// No more chunks of text available in object 
		/// </summary> 
		FILTER_E_END_OF_CHUNKS = 0x80041700, 
		/// <summary> 
		/// No more text available in chunk 
		/// </summary> 
		FILTER_E_NO_MORE_TEXT = 0x80041701, 
		/// <summary> 
		/// No more property values available in chunk 
		/// </summary> 
		FILTER_E_NO_MORE_VALUES = 0x80041702, 
		/// <summary> 
		/// Unable to access object 
		/// </summary> 
		FILTER_E_ACCESS = 0x80041703, 
		/// <summary> 
		/// Moniker doesn't cover entire region 
		/// </summary> 
		FILTER_W_MONIKER_CLIPPED = 0x00041704, 
		/// <summary> 
		/// Unable to bind IFilter for embedded object 
		/// </summary> 
		FILTER_E_EMBEDDING_UNAVAILABLE = 0x80041707, 
		/// <summary> 
		/// Unable to bind IFilter for linked object 
		/// </summary> 
		FILTER_E_LINK_UNAVAILABLE = 0x80041708, 
		/// <summary> 
		/// This is the last text in the current chunk 
		/// </summary> 
		FILTER_S_LAST_TEXT = 0x00041709, 
		/// <summary> 
		/// This is the last value in the current chunk 
		/// </summary> 
		FILTER_S_LAST_VALUES = 0x0004170A 
	} 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -