2017-10-05 25 views
0

次のコードは、拡張機能からappNameを取得します。AssocQueryStringからAppNameを取得するc#

[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; 

     } 

これを変更して、exeパスでAppNameを渡す方法を教えてください。

答えて

1

ドキュメントは、あなたがパスから実行可能ファイルの名前を取得したいので、このフラグを使用して、それを一緒に渡し、あなたが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

関連する問題