确定扩展的注册应用程序

时间:2009-06-03 17:19:52

标签: windows winapi shellexecute

我有一个文件扩展名,我想获取在ShellExecute这种类型的文件时将调用的应用程序的名称(如果有的话)。这是一个WTL / C ++应用程序。是否有任何示例代码可以执行此操作?

谢谢!

4 个答案:

答案 0 :(得分:3)

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。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

抱歉,没有代码,但有一些有用的信息。请参阅此相关问题:how-does-vista-generate-the-icon-for-documents-associated-to-my-application

它询问了图标,但事实证明与扩展程序相关联的程序存储在注册表中与该扩展程序图标相同的位置。

答案 3 :(得分:0)

这是自1995年以来的Win32常见问题解答(Shell,请参阅Google Groups,Win32)