如何在 Windows 上的“开始”菜单中使用文件夹创建快捷方式
How do I create a Shortcut with a folder in the Start Menu on Windows
到目前为止,我可以在开始菜单中创建一个快捷方式,这是结果:
我想用一个文件夹创建这个快捷方式,这个文件夹在开始菜单中,就像这样:
我该怎么办?
这是我的代码:
void CreateShort(CString strApp, char* pcLnk)
{
HRESULT hr = CoInitialize(NULL);
if(SUCCEEDED(hr))
{
IShellLink *pisl;
hr = CoCreateInstance(CLSID_ShellLink, NULL,
CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pisl);
if(SUCCEEDED(hr))
{
IPersistFile* pIPF;
pisl->SetPath(strApp);
hr = pisl->QueryInterface(IID_IPersistFile, (void**)&pIPF);
if(SUCCEEDED(hr))
{
USES_CONVERSION;
LPCOLESTR lpOlestr = A2COLE(pcLnk);
hr = pIPF->Save(lpOlestr, FALSE);
if (SUCCEEDED(hr))
{
}
else
{
DWORD dw = GetLastError();
AfxMessageBox(dw);
}
pIPF->Release();
}
pisl->Release();
}
}
CoUninitialize();
}
更新:我在调用我的函数时添加了这段代码:
SHGetSpecialFolderPathA(NULL, szStartPath, CSIDL_COMMON_PROGRAMS, 0);
CString path = CString(szStartPath);
SHCreateDirectory(NULL,path)
strcat_s(szStartPath, MAX_PATH, "\myapp\");
strcat_s(szStartPath, MAX_PATH, m_acAppName);
CreateShort(m_strSetupDir, szStartPath);
只需在开始菜单的“程序”组文件夹(您可以使用 SHGetFolderPath(CSIDL_[COMMON_]PROGRAMS)
或 SHGetKnownFolderPath(FOLDERID_[Common]Programs)
找到)下的文件系统上创建一个常规子文件夹,然后您就可以创建您的子文件夹中的文件快捷方式。
到目前为止,我可以在开始菜单中创建一个快捷方式,这是结果:
我想用一个文件夹创建这个快捷方式,这个文件夹在开始菜单中,就像这样:
我该怎么办?
这是我的代码:
void CreateShort(CString strApp, char* pcLnk)
{
HRESULT hr = CoInitialize(NULL);
if(SUCCEEDED(hr))
{
IShellLink *pisl;
hr = CoCreateInstance(CLSID_ShellLink, NULL,
CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pisl);
if(SUCCEEDED(hr))
{
IPersistFile* pIPF;
pisl->SetPath(strApp);
hr = pisl->QueryInterface(IID_IPersistFile, (void**)&pIPF);
if(SUCCEEDED(hr))
{
USES_CONVERSION;
LPCOLESTR lpOlestr = A2COLE(pcLnk);
hr = pIPF->Save(lpOlestr, FALSE);
if (SUCCEEDED(hr))
{
}
else
{
DWORD dw = GetLastError();
AfxMessageBox(dw);
}
pIPF->Release();
}
pisl->Release();
}
}
CoUninitialize();
}
更新:我在调用我的函数时添加了这段代码:
SHGetSpecialFolderPathA(NULL, szStartPath, CSIDL_COMMON_PROGRAMS, 0);
CString path = CString(szStartPath);
SHCreateDirectory(NULL,path)
strcat_s(szStartPath, MAX_PATH, "\myapp\");
strcat_s(szStartPath, MAX_PATH, m_acAppName);
CreateShort(m_strSetupDir, szStartPath);
只需在开始菜单的“程序”组文件夹(您可以使用 SHGetFolderPath(CSIDL_[COMMON_]PROGRAMS)
或 SHGetKnownFolderPath(FOLDERID_[Common]Programs)
找到)下的文件系统上创建一个常规子文件夹,然后您就可以创建您的子文件夹中的文件快捷方式。