/* * * AssocStr str * File name extension * A file name extension, such as .txt. * * CLSID * A CLSID GUID in the standard "{GUID}" format. * * ProgID * An application's ProgID, such as Word.Document.8. * * Executable name * The name of an application's .exe file. The ASSOCF_OPEN_BYEXENAME flag must be set in flags. */ private static string GetAssociation(AssocF assocF, AssocStr assocStr, string doctype, string pszExtra = null) { try { uint pcchOut = 0; // size of output buffer // First call is to get the required size of output buffer AssocQueryString(assocF, assocStr, doctype, pszExtra, null, ref pcchOut); if (pcchOut == 0) { return(String.Empty); } var pszOut = new StringBuilder((int)pcchOut); // Allocate the output buffer AssocQueryString(assocF, assocStr, doctype, pszExtra, pszOut, ref pcchOut); // Get the full pathname to the program in pszOut string doc = pszOut.ToString(); return(doc); } catch (Exception exception) { Logger.Warn(exception); return(null); } }
static string AssocQueryString(AssocStr association, string extension) { const int S_OK = 0; const int S_FALSE = 1; uint length = 0; uint ret = AssocQueryString(AssocF.None, association, extension, null, null, ref length); if (ret != S_FALSE) { //throw new InvalidOperationException("Could not determine associated string"); return(null); } var sb = new StringBuilder((int)length); // (length-1) will probably work too as the marshaller adds null termination ret = AssocQueryString(AssocF.None, association, extension, null, sb, ref length); if (ret != S_OK) { //throw new InvalidOperationException("Could not determine associated string"); return(null); } return(sb.ToString()); }
static extern uint AssocQueryString( AssocF flags, AssocStr str, string pszAssoc, string pszExtra, [Out] StringBuilder pszOut, [In][Out] ref uint pcchOut);
public bool?IsAssociated() { try { const string extension = ".feature"; uint resultLength = 0; const AssocStr assocStr = AssocStr.FriendlyDocName; AssocQueryString(AssocF.NoTruncate, assocStr, extension, null, null, ref resultLength); if (resultLength == 0) { return(false); } // Allocate the output buffer StringBuilder pszOut = new StringBuilder((int)resultLength); // Get the full pathname to the program in pszOut AssocQueryString(AssocF.Verify, assocStr, extension, null, pszOut, ref resultLength); string doc = pszOut.ToString(); return(doc.IndexOf("SpecFlow", StringComparison.InvariantCultureIgnoreCase) >= 0); } catch (Exception ex) { tracer.Trace("IsAssociated falied: {0}", this, ex); return(null); } }
/// <summary> /// Retrieves a file association for a particular extension /// From Ohad Schneider <see cref="!:https://stackoverflow.com/a/17773402"/> /// </summary> /// <param name="associationFlags">Any flags which need to be set in order to retrieve the association</param> /// <param name="associationType">The type of association which should be retrieved</param> /// <param name="fileExtension">The file association which we will use to determine the association</param> /// <returns></returns> private static string GetFileAssociation(AssocF associationFlags, AssocStr associationType, string fileExtension) { uint bufferSize = 0; uint returnedStatus = FileInvoker.AssocQueryString(associationFlags, associationType, fileExtension, null, null, ref bufferSize); const int successWithLength = 1; if (returnedStatus != successWithLength) { throw new NoAssociationFoundException( $"Could not determine the required buffer size required for the file association {associationType} and file extension {fileExtension}", fileExtension); } StringBuilder stringBuilder = new StringBuilder((int)bufferSize); returnedStatus = FileInvoker.AssocQueryString(associationFlags, associationType, fileExtension, null, stringBuilder, ref bufferSize); const int successWithAssociation = 0; if (returnedStatus != successWithAssociation) { throw new NoAssociationFoundException( $"Could not determine a string for the file association {associationType} and file extension {fileExtension}", fileExtension); } return(stringBuilder.ToString()); }
internal static extern uint AssocQueryString( AssocF flags, AssocStr str, string pszAssoc, string pszExtra, [Out] StringBuilder pszOut, [In][Out] ref uint pcchOut);
private static extern HRESULT AssocQueryString( AssocF flags, AssocStr str, string pszAssoc, string pszExtra, [Out] StringBuilder pszOut, ref uint pcchOut);
public static extern uint AssocQueryString( AssocF flags, AssocStr str, [MarshalAs(UnmanagedType.LPWStr)] string pszAssoc, [MarshalAs(UnmanagedType.LPWStr)] string pszExtra, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszOut, ref uint pcchOut );
public static string FileExtentionInfo(AssocStr assocStr, string doctype) { uint pcchOut = 0; AssocQueryString(AssocF.Verify, assocStr, doctype, null, null, ref pcchOut); StringBuilder pszOut = new StringBuilder((int)pcchOut); AssocQueryString(AssocF.Verify, assocStr, doctype, null, pszOut, ref pcchOut); return pszOut.ToString(); }
public static string FileExtentionInfo(AssocStr assocStr, string doctype) { uint pcchOut = 0; AssocQueryString(AssocF.Verify, assocStr, doctype, null, null, ref pcchOut); StringBuilder pszOut = new StringBuilder((int)pcchOut); AssocQueryString(AssocF.Verify, assocStr, doctype, null, pszOut, ref pcchOut); return pszOut.ToString(); }
public static string GetExtentionInfo(AssocStr assocStr, string extension) { uint pcchOut = 0; AssocQueryString(AssocF.Verify, assocStr, extension, null, null, ref pcchOut); StringBuilder pszOut = new StringBuilder((int)pcchOut); AssocQueryString(AssocF.Verify, assocStr, extension, null, pszOut, ref pcchOut); return(pszOut.ToString()); }
private static string FileExtentionInfo(AssocStr assocStr, string extensionWithDot) { #pragma warning disable CA1806 // Do not ignore method results uint pcchOut = 0; AssocQueryString(AssocF.Verify, assocStr, extensionWithDot, null, null, ref pcchOut); StringBuilder pszOut = new((int)pcchOut); AssocQueryString(AssocF.Verify, assocStr, extensionWithDot, null, pszOut, ref pcchOut); #pragma warning restore CA1806 // Do not ignore method results return(pszOut.ToString()); }
public static string FileExtentionInfo(AssocStr assocStr, string doctype) { if ((doctype.Length <= 1) || !doctype.StartsWith(".")) return ""; uint pcchOut = 0; AssocQueryString(AssocF.Verify, assocStr, doctype, null, null, ref pcchOut); if (pcchOut == 0) return (doctype.Trim('.').ToUpper() + " File"); StringBuilder pszOut = new StringBuilder((int)pcchOut); AssocQueryString(AssocF.Verify, assocStr, doctype, null, pszOut, ref pcchOut); return pszOut.ToString(); }
public static string AssocQueryString(AssocF assocF, AssocStr association, string assocString) { var length = 0u; var queryResult = AssocQueryString(assocF, association, assocString, null, null, ref length); if (queryResult != 1) { return(null); } var builder = new StringBuilder((int)length); queryResult = AssocQueryString(assocF, association, assocString, null, builder, ref length); return(queryResult == 0 ? builder.ToString() : null); }
private static string FileExtentionInfo(AssocStr assocStr, string doctype, string verb) { uint pcchOut = 0; AssocQueryString(AssocF.Verify, assocStr, doctype, verb, null, ref pcchOut); //Debug.Assert(pcchOut != 0); if (pcchOut == 0) { return(""); } StringBuilder pszOut = new StringBuilder((int)pcchOut); AssocQueryString(AssocF.Verify, assocStr, doctype, verb, pszOut, ref pcchOut); return(pszOut.ToString()); }
private static string FileExtentionInfo(AssocStr assocStr, string doctype) { IntPtr pcchOut = IntPtr.Zero; if (SafeNativeMethods.AssocQueryString(AssocF.Verify, assocStr, doctype, null, null, ref pcchOut) != 1) { return(null); } StringBuilder pszOut = new StringBuilder((int)pcchOut); if (SafeNativeMethods.AssocQueryString(AssocF.Verify, assocStr, doctype, null, pszOut, ref pcchOut) != 0) { return(null); } return(pszOut.ToString()); }
internal static string AssocQueryString(AssocStr association, string extension) { uint length = 0; uint ret = AssocQueryString(AssocF.None, association, extension, null, null, ref length); if (ret != 1) // expected S_FALSE { throw new InvalidOperationException("Could not determine associated string, unable to get the required buffer length. Error code: " + ret); } var sb = new StringBuilder((int)length); // (length-1) will probably work too as null termination is added ret = AssocQueryString(AssocF.None, association, extension, null, sb, ref length); if (ret != 0) // expected S_OK { throw new InvalidOperationException("Could not determine associated string. Error code: " + ret); } return(sb.ToString()); }
internal static string AssocQueryString(AssocF assocF, AssocStr association, string assocString) { uint length = 0; uint ret = AssocQueryString(assocF, association, assocString, null, null, ref length); if (ret != 1) //expected S_FALSE { return null; //throw new InvalidOperationException("Could not determine associated string"); } var sb = new StringBuilder((int) length); //(length-1) will probably work too as null termination is added ret = AssocQueryString(assocF, association, assocString, null, sb, ref length); if (ret != 0) //expected S_OK { return null; //throw new InvalidOperationException("Could not determine associated string"); } return sb.ToString(); }
private string AssocQueryString(AssocStr association, string extension, string verb) { uint length = 0; var ret = AssocQueryString(AssocF.None, association, extension, verb, null, ref length); if (ret != HRESULT.S_FALSE) //expected S_FALSE to indicate the required amount of memory (ref length) { return(""); } var sb = new StringBuilder((int)length); ret = AssocQueryString(AssocF.None, association, extension, verb, sb, ref length); if (ret != HRESULT.S_OK) //expected S_OK { throw new Win32Exception((int)ret); } return(sb.ToString()); }
private string AssocQueryString(AssocStr association, string extension) { uint length = 0; uint ret = AssocQueryString( AssocF.None, association, extension, "printto", null, ref length); if (ret != 1) //expected S_FALSE { throw new Win32Exception(); } var sb = new StringBuilder((int)length); ret = AssocQueryString( AssocF.None, association, extension, null, sb, ref length); if (ret != 0) //expected S_OK { throw new Win32Exception(); } return(sb.ToString()); }
static string assocQueryString(AssocStr assocStr, string extension) { const int S_OK = 0, S_FALSE = 1; uint length = 0; uint ret = AssocQueryString(AssocFlags.None, assocStr, extension, null, null, ref length); if (ret != S_FALSE) { return(null); } StringBuilder sb = new ((int)length); ret = AssocQueryString(AssocFlags.None, assocStr, extension, null, sb, ref length); if (ret != S_OK) { return(null); } return(sb.ToString()); }
public static string AssocQueryString(AssocStr association, string extension) { const int sOk = 0; const int sFalse = 1; uint length = 0; var result = AssocQueryString(AssocF.None, association, extension, null, null, ref length); if (result != sFalse) { return(null); } var stringBuilder = new StringBuilder((int)length); result = AssocQueryString(AssocF.None, association, extension, null, stringBuilder, ref length); if (result != sOk) { return(null); } return(stringBuilder.ToString()); }
private string AssocQueryString(AssocStr association, string extension) { const int S_OK = 0; const int S_FALSE = 1; uint length = 0; uint ret = AssocQueryString(AssocF.None, association, extension, null, null, ref length); if (ret != S_FALSE) { throw new InvalidOperationException("Could not determine associated string"); } var sb = new StringBuilder((int)length); ret = AssocQueryString(AssocF.None, association, extension, null, sb, ref length); if (ret != S_OK) { throw new InvalidOperationException("Could not determine associated string"); } return(sb.ToString()); }
public static string FileExtentionInfo(AssocStr assocStr, string Extension) { Extension = "." + Extension.Trim('.').ToLowerInvariant(); uint pcchOut = 0; AssocQueryString(AssocF.Verify, assocStr, Extension, null, null, ref pcchOut); StringBuilder pszOut = new StringBuilder((int)pcchOut); AssocQueryString(AssocF.Verify, assocStr, Extension, null, pszOut, ref pcchOut); return pszOut.ToString(); }
private static extern uint AssocQueryString(AssocF flags, AssocStr str, string extension, string pszExtra, [Out] StringBuilder pszOut, ref uint pcchOut);
public static string GetAssoc(string pszAssoc , AssocF flags, AssocStr str) { uint pcchOut = 0; AssocQueryString(flags, str, pszAssoc, null, null, ref pcchOut); StringBuilder pszOut = new StringBuilder((int)pcchOut); AssocQueryString(flags, str, pszAssoc, null, pszOut, ref pcchOut); return pszOut.ToString(); }
private static string GetAssocApplicationNative(string fileExtensionIncludingDot, AssocStr str) { uint cOut = 0; if (AssocQueryString(AssocF.Verify | AssocF.RemapRunDll | AssocF.InitIgnoreUnknown, str, fileExtensionIncludingDot, null, null, ref cOut) != 1) { return(null); } var pOut = new StringBuilder((int)cOut); if (AssocQueryString(AssocF.Verify | AssocF.RemapRunDll | AssocF.InitIgnoreUnknown, str, fileExtensionIncludingDot, null, pOut, ref cOut) != 0) { return(null); } return(pOut.ToString()); }
private static extern uint AssocQueryString(AssocF flags, AssocStr str, string pszAssoc, string pszExtra, [Out] StringBuilder sOut, [In][Out] ref uint nOut);
public static string GetAssociation(AssocF assocF, AssocStr assocStr, string doctype) { try { uint pcchOut = 0; // size of output buffer // First call is to get the required size of output buffer AssocQueryString(assocF, assocStr, doctype, null, null, ref pcchOut); if (pcchOut == 0) { return String.Empty; } // Allocate the output buffer var pszOut = new StringBuilder((int)pcchOut); // Get the full pathname to the program in pszOut AssocQueryString(assocF, assocStr, doctype, null, pszOut, ref pcchOut); string doc = pszOut.ToString(); return doc; } catch (Exception exception) { Log.Error(exception); return null; } }
internal static string AssocQueryString(AssocStr association, string extension) { return AssocQueryString(AssocF.None, association, extension); }
public static extern uint AssocQueryString(int flags, AssocStr str, string assoc, string extra, [Out] StringBuilder result, [In][Out] ref uint resultLength);