解决方案 »
- 弱弱地问个问题
- 《Windows程序设计》——对话方块提问
- 请教高手,添加控件后对话框无法显示的问题。
- 关于vc6.0编程环境的问题
- 有没有办法让一个对话框中的控件数量超过256个?
- 求优化算法:若干矩形覆盖闭合曲线围成的区域
- 快件加急~~~~~~~~~~~在线等待...........怎样清除文本框(textbox)的内容?
- 为什么错了?请指点
- XTPToolKitPro CXTPChartControl制作曲线编辑器
- ?哥们,帮我,我在网络编程时用的是CAysncSocket,但我在是在一个单独的线程里用CAsyncSocket.Send()发送数据,我想使CAsyncSocket.Send()变成阻塞模式,怎么办?(ZhuX)
- [散分]MVP Community Camp 社区大课堂
- 新手网络编程遇到的一个问题,求大神指点
但为做过类型的,直接分析lnk文件,查找“:\”字符串。
可参考:
为快捷方式文件(lnk文件)右键菜单添加“打开所在文件夹”
//返回快捷方式所指向的文件名
CString ExpandShortcut(CString &inFile)
{
CString outFile = _T(" "); // Make sure we have a path
ASSERT(inFile != _T( "")); IShellLink* psl;
HRESULT hres;
LPTSTR lpsz = inFile.GetBuffer(MAX_PATH); // Create instance for shell link
hres = ::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
IID_IShellLink, (LPVOID*) &psl);
if (SUCCEEDED(hres)) {
// Get a pointer to the persist file interface
IPersistFile* ppf;
hres = psl-> QueryInterface(IID_IPersistFile, (LPVOID*) &ppf);
if (SUCCEEDED(hres)) {
// Make sure it 's ANSI
#ifndef _UNICODE
wchar_t wsz[MAX_PATH];
::MultiByteToWideChar(CP_ACP, 0, lpsz, -1, wsz, MAX_PATH); // Load shortcut
hres = ppf-> Load(wsz, STGM_READ);
#else
hres = ppf-> Load(lpsz, STGM_READ);
#endif
if (SUCCEEDED(hres)) {
WIN32_FIND_DATA wfd;
// find the path from that
HRESULT hres = psl-> GetPath(outFile.GetBuffer(MAX_PATH),
MAX_PATH,
&wfd,
SLGP_UNCPRIORITY); outFile.ReleaseBuffer();
}
ppf-> Release();
}
psl-> Release();
} inFile.ReleaseBuffer(); // if this fails, outFile == " "
return outFile;
}