下面的代码将为我提供来自扩展的appName。
[DllImport("Shlwapi.dll", SetLastError = true)]
static extern uint AssocQueryString(AssocF flags, AssocStr str, string pszAssoc, string pszExtra,
[Out] StringBuilder pszOut, [In][Out] ref uint pcchOut);
public string Get(string doctype)
{
uint pcchOut = 0;
AssocQueryString(AssocF.Verify, AssocStr.FriendlyAppName, doctype, null, null, ref pcchOut);
StringBuilder pszOut = new StringBuilder((int)pcchOut);
AssocQueryString(AssocF.Verify, AssocStr.FriendlyAppName, doctype, null, pszOut, ref pcchOut);
string doc = pszOut.ToString();
return doc;
}
我怎样才能改变它给我的AppName传递一个exe路径?
发布于 2017-10-05 16:03:00
文档提到,如果设置了ASSOCF_OPEN_BYEXENAME
标志,则可以传递可执行文件名,因此您需要从路径中获取可执行文件的名称,然后将其与此标志一起传递:
public string Get(string path)
{
string fileName = Path.GetFileName(path);
uint pcchOut = 0;
AssocQueryString(AssocF.OpenByExeName, AssocStr.FriendlyAppName, fileName, null, null, ref pcchOut);
StringBuilder pszOut = new StringBuilder((int)pcchOut);
AssocQueryString(AssocF.OpenByExeName, AssocStr.FriendlyAppName, fileName, null, pszOut, ref pcchOut);
string doc = pszOut.ToString();
return doc;
}
指向文档的链接:https://msdn.microsoft.com/en-us/library/windows/desktop/bb773471(v=vs.85).aspx
https://stackoverflow.com/questions/46589834
复制相似问题