IShellLink GetArguments方法获取快捷方式的参数获取不到,请看红色部分代码

yuanfei_cz 2013-01-25 03:46:14
代码如下:
HRESULT hr;

//IPersistFile *ppf; //IPersisFil对象指针
IShellLink *pLink; //IShellLink对象指针
CoInitialize(NULL);
//创建IShellLink对象
hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&pLink);
if (FAILED(hr))
return FALSE;

//从IShellLink对象中获取IPersistFile接口
//hr = pLink->QueryInterface(IID_IPersistFile, (void**)&ppf);
if (FAILED(hr))
{
pLink->Release();
return FALSE;
}
//char tt[1024];
//pLink->GetArguments(tt,100);
::MessageBox( NULL, _T(GetShortcutTarget("antuso")), _T("ddd"), 0 );
//GetShortcutTarget("antuso");
CString strTemp;
pLink->GetArguments(strTemp.GetBuffer(1024),1024);//获取不到
...全文
408 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fishion 2013-01-30
  • 打赏
  • 举报
回复
我想应该是你要先确定读取只个快捷方式,用IPersistFile的load方法,然后再调用GetArguments,下面是网上的一段代码
//读取快捷方式的信息         
BOOL CsvchostDlg::ReadShortCut(LPTSTR linkName)        
{        
    ::CoInitialize(NULL);        
    IShellLink *m_pIShellLink=NULL;        
    IPersistFile *m_pIPersistFile=NULL;        
    HRESULT hr=::CoCreateInstance(CLSID_ShellLink,NULL,CLSCTX_INPROC_SERVER,IID_IShellLink,(LPVOID*)&m_pIShellLink);        
    if(hr==S_OK)        
    {        
        hr=m_pIShellLink->QueryInterface(IID_IPersistFile,(void **)&m_pIPersistFile);        
        if(hr==S_OK)        
        {        
            USES_CONVERSION;         
            m_pIPersistFile->Load(T2COLE(linkName),STGM_READWRITE);        
            wchar_t m_strPath[1000]={0};        
            //读取快捷方式的目标路径         
            m_pIShellLink->GetPath(m_strPath,50,NULL,SLGP_UNCPRIORITY);        
            CString temp=m_strPath;        
            temp.MakeUpper();        
            for(int i=0;i=7;i++)        
            {        
                if(i==5)        
                {        
                    if(wcscmp(temp.Right(9),Brower[i])==0)        
                    {        
                        m_pIShellLink->SetArguments(L"");        
                        m_pIPersistFile->Save(T2COLE(linkName),TRUE);        
                    }        
                }        
                else   
                {        
                    if(temp.Find(Brower[i])!=-1)        
                    {        
                        m_pIShellLink->SetArguments(L"");        
                        m_pIPersistFile->Save(T2COLE(linkName),TRUE);        
                    }        
                }        
            }        
        }        
        else   
        {        
            if(m_pIShellLink) m_pIShellLink->Release();        
            if(m_pIPersistFile) m_pIPersistFile->Release();        
            return FALSE;        
        }        
    }        
    else   
    {        
        if(m_pIShellLink) m_pIShellLink->Release();        
        if(m_pIPersistFile) m_pIPersistFile->Release();        
        ::CoUninitialize();        
        return FALSE;        
    }        
    if(m_pIShellLink) m_pIShellLink->Release();        
    if(m_pIPersistFile) m_pIPersistFile->Release();        
    ::CoUninitialize();        
    return TRUE;        
}
oyljerry 2013-01-26
  • 打赏
  • 举报
回复
查看返回的错误信息等

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧