AssocQueryString (shlwapi)
Last changed: -84.233.245.68

.
Summary

C# Signature:

[DllImport("Shlwapi.dll", SetLastError=true, CharSet = CharSet.Auto)]
static extern uint AssocQueryString(AssocF flags, AssocStr str, string pszAssoc, string pszExtra,
   [Out] StringBuilder pszOut, [In][Out] ref uint pcchOut);

VB Signature:

<DllImport("Shlwapi.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    Private Function AssocQueryString(ByVal flags As UInteger, ByVal str As UInteger, ByVal pszAssoc As String, _
       ByVal pszExtra As String, ByVal pszOut As Text.StringBuilder, ByRef pcchOut As UInteger) As UInteger
    End Function

User-Defined Types:

  [Flags]
  enum AssocF
  {
    Init_NoRemapCLSID = 0x1,
    Init_ByExeName = 0x2,
    Open_ByExeName = 0x2,
    Init_DefaultToStar = 0x4,
    Init_DefaultToFolder = 0x8,
    NoUserSettings = 0x10,
    NoTruncate = 0x20,
    Verify = 0x40,
    RemapRunDll = 0x80,
    NoFixUps = 0x100,
    IgnoreBaseClass = 0x200
  }

  enum AssocStr
  {
    Command = 1,
    Executable,
    FriendlyDocName,
    FriendlyAppName,
    NoOpen,
    ShellNewValue,
    DDECommand,
    DDEIfExec,
    DDEApplication,
    DDETopic,
    INFOTIP,
    QUICKTIP,
    TILEINFO,
    CONTENTTYPE,
    DEFAULTICON,
    SHELLEXTENSION,
    DROPTARGET,
    DELEGATEEXECUTE,
    SUPPORTED_URI_PROTOCOLS,
    MAX
  }

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

  public string GetAssociation(string doctype)
  {
    uint pcchOut = 0;   // size of output buffer

    // First call is to get the required size of output buffer
    AssocQueryString(AssocF.Verify, AssocStr.Executable, doctype, null, null, ref pcchOut);

    if (pcchOut == 0)
    {
           return String.Empty;
    }

    // Allocate the output buffer
    StringBuilder pszOut = new StringBuilder((int)pcchOut);

    // Get the full pathname to the program in pszOut
    AssocQueryString(AssocF.Verify, AssocStr.Executable, doctype, null, pszOut, ref pcchOut);

    string doc = pszOut.ToString();
    return doc;
  }

Documentation