using System; using System.Runtime.InteropServices; using System.Runtime.InteropServices.ComTypes; using System.Security; namespace Vanara.PInvoke { /// Specifies values used by IAutoComplete2::GetOptions and IAutoComplete2::SetOptions for options surrounding autocomplete. [Flags] public enum AUTOCOMPLETEOPTIONS { /// Do not autocomplete. ACO_NONE = 0, /// Enable the autosuggest drop-down list. ACO_AUTOSUGGEST = 0x1, /// Enable autoappend. ACO_AUTOAPPEND = 0x2, /// Add a search item to the list of completed strings. When the user selects this item, it launches a search engine. ACO_SEARCH = 0x4, /// Do not match common prefixes, such as "www." or "http://". ACO_FILTERPREFIXES = 0x8, /// Use the TAB key to select an item from the drop-down list. ACO_USETAB = 0x10, /// Use the UP ARROW and DOWN ARROW keys to display the autosuggest drop-down list. ACO_UPDOWNKEYDROPSLIST = 0x20, /// /// Normal windows display text left-to-right (LTR). Windows can be mirrored to display languages such as Hebrew or Arabic that read /// right-to-left (RTL). Typically, control text is displayed in the same direction as the text in its parent window. If /// ACO_RTLREADING is set, the text reads in the opposite direction from the text in the parent window. /// ACO_RTLREADING = 0x40, /// /// Windows Vista and later. If set, the autocompleted suggestion is treated as a phrase for search purposes. The suggestion, /// Microsoft Office, would be treated as "Microsoft Office" (where both Microsoft AND Office must appear in the search results). /// ACO_WORD_FILTER = 0x80, /// Windows Vista and later. Disable prefix filtering when displaying the autosuggest dropdown. Always display all suggestions. ACO_NOPREFIXFILTERING = 0x100 } /// /// Exposed by the autocomplete object (CLSID_AutoComplete). This interface allows applications to initialize, enable, and disable the object. /// [ComImport, SuppressUnmanagedCodeSecurity, Guid("00bb2762-6a77-11d0-a535-00c04fd7d062"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), CoClass(typeof(CAutoComplete))] public interface IAutoComplete { /// Initializes the autocomplete object. /// A handle to the window for the system edit control for which autocompletion will be enabled. /// /// A pointer to the IUnknown interface of the string list object that generates candidates for the completed string. The object must /// expose an IEnumString interface. /// /// /// A pointer to an optional, null-terminated Unicode string that gives the registry path, including the value name, where the format /// string is stored as a REG_SZ value. The autocomplete object first looks for the path under HKEY_CURRENT_USER. If it fails, it /// tries HKEY_LOCAL_MACHINE. For a discussion of the format string, see the definition of pwszQuickComplete. /// /// /// A pointer to an optional null-terminated Unicode string that specifies the format to be used if the user enters text and presses /// CTRL+ENTER. Set this parameter to NULL to disable quick completion. Otherwise, the autocomplete object treats pwszQuickComplete /// as a StringCchPrintf format string and the text in the edit box as its associated argument, to produce a new string. For example, /// set pwszQuickComplete to "http://www.%s.com/". When a user enters "MyURL" into the edit box and presses CTRL+ENTER, the text in /// the edit box is updated to "http://www.MyURL.com/". /// void Init(HWND hwndEdit, IEnumString punkAcl, [MarshalAs(UnmanagedType.LPWStr)] string pwszRegKeyPath, [MarshalAs(UnmanagedType.LPWStr)] string pwszQuickComplete); /// Enables or disables autocompletion. /// A value that is set to TRUE to enable autocompletion, or FALSE to disable it. void Enable([MarshalAs(UnmanagedType.Bool)] bool fEnable); } /// /// Extends IAutoComplete. This interface enables clients of the autocomplete object to retrieve and set a number of options that control /// how autocompletion operates. /// /// [ComImport, SuppressUnmanagedCodeSecurity, Guid("EAC04BC0-3791-11D2-BB95-0060977B464C"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), CoClass(typeof(CAutoComplete))] public interface IAutoComplete2 : IAutoComplete { /// Initializes the autocomplete object. /// A handle to the window for the system edit control for which autocompletion will be enabled. /// /// A pointer to the IUnknown interface of the string list object that generates candidates for the completed string. The object must /// expose an IEnumString interface. /// /// /// A pointer to an optional, null-terminated Unicode string that gives the registry path, including the value name, where the format /// string is stored as a REG_SZ value. The autocomplete object first looks for the path under HKEY_CURRENT_USER. If it fails, it /// tries HKEY_LOCAL_MACHINE. For a discussion of the format string, see the definition of pwszQuickComplete. /// /// /// A pointer to an optional null-terminated Unicode string that specifies the format to be used if the user enters text and presses /// CTRL+ENTER. Set this parameter to NULL to disable quick completion. Otherwise, the autocomplete object treats pwszQuickComplete /// as a StringCchPrintf format string and the text in the edit box as its associated argument, to produce a new string. For example, /// set pwszQuickComplete to "http://www.%s.com/". When a user enters "MyURL" into the edit box and presses CTRL+ENTER, the text in /// the edit box is updated to "http://www.MyURL.com/". /// new void Init(HWND hwndEdit, IEnumString punkAcl, [MarshalAs(UnmanagedType.LPWStr)] string pwszRegKeyPath, [MarshalAs(UnmanagedType.LPWStr)] string pwszQuickComplete); /// Enables or disables autocompletion. /// A value that is set to TRUE to enable autocompletion, or FALSE to disable it. new void Enable([MarshalAs(UnmanagedType.Bool)] bool fEnable); /// Sets the current autocomplete options. /// One or more flags from the AUTOCOMPLETEOPTIONS enumeration that specify autocomplete options. void SetOptions(AUTOCOMPLETEOPTIONS dwFlag); /// Gets the current autocomplete options. /// /// One or more flags from the AUTOCOMPLETEOPTIONS enumeration that indicate the options that are currently set. /// void GetOptions(out AUTOCOMPLETEOPTIONS dwFlag); } /// An autocomplete object (CLSID_AutoComplete). [ComImport, SuppressUnmanagedCodeSecurity, Guid("00BB2763-6A77-11D0-A535-00C04FD7D062"), ClassInterface(ClassInterfaceType.None)] public class CAutoComplete { } }