
{
BOOL isb
SHFILEOPSTRUCT fo
TCHAR szFrom[MAX_PATH+1]
TCHAR szTo[MAX_PATH+1]
ZeroMemory(&fo, sizeof(fo))
ZeroMemory(szFrom, sizeof(szFrom))
ZeroMemory(szTo, sizeof(szTo))
// CString strPath
isb=false
CString str1
// strPath = _T("D:\\vcvc\\ado10\\Debug\\")
// strPath += _T("1.txt")
_tcscpy(szFrom, sForm)
_tcscpy(szTo, sTo)
fo.hwnd=this->m_hWnd
fo.wFunc = FO_COPY
fo.pFrom = szFrom
fo.pTo = szTo
// fo.fFlags = FOF_SIMPLEPROGRESS
// fo.fFlags = FOF_ALLOWUNDO
fo.fFlags=FOF_NOCONFIRMATION
::SHFileOperation(&fo)
isb=true
return isb
}
启动路径C:\Documents and Settings\All Users\「开始」菜单\程序\启动
///////////////////////////////////////////////
//////////////////////////////////////////////
///////////////////////////////////////////////
//CreateShortcut("c:\\windows\\notepad.exe", //快捷方式指向的应用程序
//"c:\\config.sys", //命令行参数
//"c:\\windows", //起始位置(工作目录)
//"c:\\windows\\desktop\\记事本.lnk", //快捷方式的文件名(包含路径)
//"记事本")//快捷方式的描述
HRESULT CreateShortcut(LPCSTR pszPathObj,LPSTR pszParam,LPSTR pszPath,LPSTR pszPathLink,LPSTR pszDesc)
{
HRESULT hres//调用 COM 接口方法之后的返回值
IShellLink *pShellLink
IPersistFile *pPersistFile
WCHAR wsz[MAX_PATH]//UNICODE串, 用来存放快捷方差芹仿式文件名
CoInitialize(NULL)//初始化 COM 库
//创建 COM 对首配象并获取其实现的接口
hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,IID_IShellLink,(void **)&pShellLink)
if(FAILED(hres))
{
pShellLink ->Release()//释放 IShellLink 接口
CoUninitialize()//关闭 COM 库, 释放所有 COM 资源
return FALSE
}
//设置快捷虚纤方式的各种属性
pShellLink->SetPath(pszPathObj)//快捷方式所指的应用程序名
pShellLink->SetArguments(pszParam)//参数
pShellLink->SetDescription(pszDesc)//描述
pShellLink->SetWorkingDirectory(pszPath)//设置工作目录
//pShellLink->SetIconLocation("C:\\Icon.ico",0)//快捷方式的图标
//pShellLink->SetHotkey(热键)//启动快捷方式的热键(只能是Ctrl+Alt+_)
//pShellLink->SetShowCmd(SW_MAXIMIZE)//运行方式(常规窗口,最大化,最小化)
//查询 IShellLink 接口从而得到 IPersistFile 接口来保存快捷方式
hres = pShellLink->QueryInterface(IID_IPersistFile,(void **)&pPersistFile)
if(FAILED(hres))
{
pPersistFile ->Release()//释放 IPersistFile 接口
pShellLink ->Release()//释放 IShellLink 接口
CoUninitialize()//关闭 COM 库, 释放所有 COM 资源
return(FALSE)
}
//转换 ANSI 串为 UNICODE 串(COM 内部使用 NUICODE)
MultiByteToWideChar(CP_ACP, 0, pszPathLink, -1, wsz, MAX_PATH)
//使用 IPersistFile 接口的 Save() 方法保存快捷方式
hres = pPersistFile ->Save(wsz, TRUE)
//释放 IPersistFile 接口
pPersistFile ->Release()
//释放 IShellLink 接口
pShellLink ->Release()
//关闭 COM 库, 释放所有 COM 资源
CoUninitialize()
return(hres)
}
GetCurrentDirectory是取得当前工作路径,如果程序中改变了这个路径粗核比如用CFileDialog打开了一个文件,GetCurrentDirectory得到的结果会发生变化。一般来说,取得亮握程序运行目录的方法是用GetModuleFileName来获取当前Module的完整路径,当其第一个参数hModule置NULL的时候得到当前APP的绝对路径,然后去掉最后一个"\"以后的部分即敬凳庆文件名部分,就得到了程序运行目录。
大体上可以这样写(仅供参考):
char buffer[MAX_PATH+1]
::GetModuleFileName (NULL,buffer,MAX_PATH)
for(int i=MAX_PATH-1i>=0i--)
{
if(*(buffer+i)!='\\')
{
*(buffer+i)=0
}else{
break
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)