![](/img/trans.png)
[英]Is using sqlite db file with changed extension as registered application file a bad idea?
[英]Determine the registered application for an extension
我有一個文件擴展名,我想獲取當我ShellExecute此類文件時將調用的應用程序的名稱(如果有)。 這是一個WTL / C ++應用程序。 是否有任何示例代碼可以做到這一點?
謝謝!
TWK,
您可能正在尋找Win32 AssocQueryStringByKey函數。
http://msdn.microsoft.com/en-us/library/bb773473(VS.85).aspx
ASSOCSTR值,該值指定要返回的字符串類型:
typedef enum {
ASSOCSTR_COMMAND = 1,
ASSOCSTR_EXECUTABLE,
ASSOCSTR_FRIENDLYDOCNAME,
ASSOCSTR_FRIENDLYAPPNAME,
ASSOCSTR_NOOPEN,
ASSOCSTR_SHELLNEWVALUE,
ASSOCSTR_DDECOMMAND,
ASSOCSTR_DDEIFEXEC,
ASSOCSTR_DDEAPPLICATION,
ASSOCSTR_DDETOPIC,
ASSOCSTR_INFOTIP,
ASSOCSTR_QUICKTIP,
ASSOCSTR_TILEINFO,
ASSOCSTR_CONTENTTYPE,
ASSOCSTR_DEFAULTICON,
ASSOCSTR_SHELLEXTENSION,
ASSOCSTR_DROPTARGET,
ASSOCSTR_DELEGATEEXECUTE,
ASSOCSTR_MAX
} ASSOCSTR;
我的猜測是您想要ASSOCSTR_FRIENDLYAPPNAME。
DWORD dwSize = 255;
TCHAR sBuffer[MAX_PATH] = {0};
HRESULT hr = AssocQueryString(0, ASSOCSTR_EXECUTABLE, _T(".htm"), _T("Open"), sBuffer, &dwSize);
CString csExt;
csExt.Format(_T("%s"), sBuffer);
AfxMessageBox(csExt);
抱歉,沒有代碼,但是有一些有用的信息。 參見以下相關問題: vista如何生成與我的應用程序相關的文檔的圖標
它詢問了有關圖標的信息,但事實證明與擴展名關聯的程序與該擴展名的圖標存儲在注冊表的同一位置。
自1995年以來就是Win32常見問題解答(Shell,請參見Google網上論壇,Win32)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.