首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从AppName AssocQueryString c#获得

从AppName AssocQueryString c#获得
EN

Stack Overflow用户
提问于 2017-10-05 15:46:56
回答 1查看 643关注 0票数 0

下面的代码将为我提供来自扩展的appName。

代码语言:javascript
运行
复制
   [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路径?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-05 16:03:00

文档提到,如果设置了ASSOCF_OPEN_BYEXENAME标志,则可以传递可执行文件名,因此您需要从路径中获取可执行文件的名称,然后将其与此标志一起传递:

代码语言:javascript
运行
复制
  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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46589834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档