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
  }

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;
    AssocQueryString(AssocF.Verify, AssocStr.FriendlyDocName, doctype, null, null, ref pcchOut);
    StringBuilder pszOut = new StringBuilder((int)pcchOut);
    AssocQueryString(AssocF.Verify, AssocStr.FriendlyDocName, doctype, null, pszOut, ref pcchOut);
    return pszOut;
  }

Documentation