• windows下,读取快捷方式lnk所指向的路径


    BOOL GetLnkFileName(
    	OUT PWSTR pLnkName,
    	OUT PWSTR OepnFileNameBuufer,
    	IN DWORD OpenFileNameBufferSize) //传入快捷方式,返回快捷方式指向的文件名
    {
    	CoInitialize(0);
    	BOOL bRet = FALSE; //返回值判断.
    	IShellLinkW* shlink = 0;
    	IPersistFile* persist = 0;
    	WIN32_FIND_DATA wfd;
    	PWSTR MyXbpathBuffer = NULL;
    
    	if (NULL == OepnFileNameBuufer)
    	{
    		OutputDebugString(TEXT("Sorry FUN: GetGlobalOpenFileName HeadAlloc Fail "));
    		return FALSE;
    	}
    
    
    
    	HRESULT hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLinkW, (void**)&shlink);
    	if (SUCCEEDED(hr)) {
    		hr = shlink->QueryInterface(IID_IPersistFile, (void**)&persist);
    		if (SUCCEEDED(hr)) {
    			hr = persist->Load(pLnkName, STGM_READ);
    			if (SUCCEEDED(hr)) {
    				// shlink->Resolve(0, SLR_ANY_MATCH | SLR_NO_UI);           
    				hr = shlink->GetPath(OepnFileNameBuufer, OpenFileNameBufferSize, &wfd, SLGP_RAWPATH);
    			}
    			persist->Release();
    		}
    		shlink->Release();
    	}
    	
    
    	
    RELEASE:
    	CoUninitialize();
    
    	if (NULL != MyXbpathBuffer)
    	{
    		delete MyXbpathBuffer;
    	}
    	return TRUE; 
    	
    }
    
  • 相关阅读:
    方差分析
    Rust 指定安装目录
    perl 子函数传入多个数组
    perl 获取目录信息
    R绘图布局包 customLayout
    C语言 自定义函数按行读入文件2
    C语言 自定义函数按行读入文件
    C语言按行读入文件
    sed删除指定行
    mybatis 批量更新
  • 原文地址:https://www.cnblogs.com/iBinary/p/10749710.html
Copyright © 2020-2023  润新知