C++怎么取到桌面其中一个快捷方式图标里的起始位置
C++如何取到桌面其中一个快捷方式图标里的起始位置
比如说安装了个360杀毒软件,并在桌面上创建了360杀毒软件的快捷方式。它的属性里有个“起始位置”,如"C:\Program Files\360\360sd"。 我要写一个C++程序,只知道360杀毒软件快捷图标的名称,要取到“起始位置”的字符串"C:\Program Files\360\360sd"。 如何写?桌面路径取当前用户的桌面路径。也就是说:如果一台机子上开了好几个用户账号,那就取登陆的那个的桌面地址。假设每一个用户都安装了360杀毒,并生成桌面图标.
------解决方案--------------------
比如说安装了个360杀毒软件,并在桌面上创建了360杀毒软件的快捷方式。它的属性里有个“起始位置”,如"C:\Program Files\360\360sd"。 我要写一个C++程序,只知道360杀毒软件快捷图标的名称,要取到“起始位置”的字符串"C:\Program Files\360\360sd"。 如何写?桌面路径取当前用户的桌面路径。也就是说:如果一台机子上开了好几个用户账号,那就取登陆的那个的桌面地址。假设每一个用户都安装了360杀毒,并生成桌面图标.
------解决方案--------------------
void QdSetup::GetLinkPath(wchar_t *lpszLink, wchar_t *szPath, wchar_t *szParam)
{
HRESULT hres;
IShellLink* psl;
wchar_t szGotPath[MAX_PATH];
wchar_t szArguement[MAX_PATH];
WIN32_FIND_DATA wfd;
*szPath = 0; // assume failure
CoInitialize(0);
// Get a pointer to the IShellLink interface.
hres = CoCreateInstance(CLSID_ShellLink, NULL,
CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID *) &psl);
if (SUCCEEDED(hres)) {
IPersistFile* ppf;
// Get a pointer to the IPersistFile interface.
hres = psl->QueryInterface(IID_IPersistFile,
(void**)&ppf);
if (SUCCEEDED(hres)) {
//WCHAR wsz[MAX_PATH];
//// Ensure that the string is Unicode.
//MultiByteToWideChar(CP_ACP, 0, lpszLink, -1, wsz,
// MAX_PATH);
// Load the shortcut.