Search
Module:
Directory

   Desktop Functions:

   Smart Device Functions:


Show Recent Changes
Subscribe (RSS)
Misc. Pages
Comments
FAQ
Helpful Tools
Playground
Suggested Reading
Website TODO List
Download Visual Studio Add-In

IAutoComplete2 (Interfaces)
 
.
Summary
A little bit more advaced autocomplete

C# Definition:

[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("EAC04BC0-3791-11D2-BB95-0060977B464C")]
public interface IAutoComplete2 {
    [PreserveSig] int Init(
        // Handle to the window for the system edit control that is to
        // have autocompletion enabled.
        IntPtr hwndEdit,

        // Pointer to the IUnknown interface of the string list object that
        // is responsible for generating candidates for the completed
        // string. The object must expose an IEnumString interface.
        [MarshalAs(UnmanagedType.IUnknown)] object punkACL,

        // 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 then tries HKEY_LOCAL_MACHINE . For a discussion of the
        // format string, see the definition of pwszQuickComplete.
        [MarshalAs(UnmanagedType.LPWStr)] string pwszRegKeyPath,

        // Pointer to an optional string that specifies the format to be
        // used if the user enters some text and presses CTRL+ENTER. Set
        // this parameter to NULL to disable quick completion. Otherwise,
        // the autocomplete object treats pwszQuickComplete as a sprintf
        // 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/".
        [MarshalAs(UnmanagedType.LPWStr)] string pwszQuickComplete
    );

    // Enables or disables autocompletion.
    [PreserveSig] int Enable(bool value);

    // Sets the current autocomplete options.
    [PreserveSig] int SetOptions(AUTOCOMPLETEOPTIONS dwFlag);

    // Retrieves the current autocomplete options.
    [PreserveSig] int GetOptions(out AUTOCOMPLETEOPTIONS pdwFlag);
}

User-Defined Types:

/// <summary>
///   Specifies values used by IAutoComplete2::GetOptions and
///   "IAutoComplete2.SetOptions" for options surrounding autocomplete.
/// </summary>
/// <remarks>
///   [AUTOCOMPLETEOPTIONS Enumerated Type ()]
///   http://msdn.microsoft.com/en-us/library/bb762479.aspx
/// </remarks>
[Flags]
public enum AUTOCOMPLETEOPTIONS
{
    /// <summary>Do not autocomplete.</summary>
    ACO_NONE = 0x0000,
public enum AUTOCOMPLETEOPTIONS {
    // No 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. Selecting this item launches a search engine.
    ACO_SEARCH = 0x4,

    // Don't match common prefixes, such as "www.", "http://", and so on.
    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,

    /// <summary>Enable the autosuggest drop-down list.</summary>
    ACO_AUTOSUGGEST = 0x0001,
    // If ACO_RTLREADING is set, the text reads in the opposite direction from the text in the parent window.
    ACO_RTLREADING = 0x40
}

Notes:

None.

    /// <summary>Enable autoappend.</summary>
    ACO_AUTOAPPEND = 0x0002,

Tips & Tricks:

Please add some!

    /// <summary>Add a search item to the list of
    /// completed strings. When the user selects
    /// this item, it launches a search engine.</summary>
    ACO_SEARCH = 0x0004,

Sample Code:

static readonly Guid CLSID_AutoComplete = new Guid("{00BB2763-6A77-11D0-A535-00C04FD7D062}");

    /// <summary>Do not match common prefixes, such as
    /// "www." or "http://".</summary>
    ACO_FILTERPREFIXES = 0x0008,
private IAutoComplete2 GetAutoComplete() {
    Type CAutoComplete = Type.GetTypeFromCLSID(CLSID_AutoComplete);

    /// <summary>Use the TAB key to select an
    /// item from the drop-down list.</summary>
    ACO_USETAB = 0x0010,
    return (IAutoComplete2)Activator.CreateInstance(CAutoComplete);
}

    /// <summary>Use the UP ARROW and DOWN ARROW keys to
    /// display the autosuggest drop-down list.</summary>
    ACO_UPDOWNKEYDROPSLIST = 0x0020,

    /// <summary>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.</summary>
    ACO_RTLREADING = 0x0040,

Alternative Managed API:

Do you know one? Please contribute it!

    /// <summary>[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).</summary>
    ACO_WORD_FILTER = 0x0080,

Documentation

    /// <summary>[Windows Vista and later]. Disable prefix
    /// filtering when displaying the autosuggest dropdown.
    /// Always display all suggestions.</summary>
    ACO_NOPREFIXFILTERING = 0x0100
}

Notes:

None.

Tips & Tricks:

For an extended example see:

[CodeProject: C# does Shell, Part 4]

Sample Code:

static readonly Guid CLSID_AutoComplete = new Guid("{00BB2763-6A77-11D0-A535-00C04FD7D062}");

private IAutoComplete2 GetAutoComplete() {
    Type CAutoComplete = Type.GetTypeFromCLSID(CLSID_AutoComplete);

    return (IAutoComplete2)Activator.CreateInstance(CAutoComplete);
}


Alternative Managed API:

Do you know one? Please contribute it!

Documentation

Please edit this page!

Do you have...

  • helpful tips?
  • corrections to the existing content?
  • alternate definitions?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing any supporting types needed.

 
Access PInvoke.net directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version
Revisions