【求助】有关shellExecute函数的问题
mfc吧
全部回复
仅看楼主
level 11
逆回溯 楼主
HINSTANCE ShellExecute(
HWND hwnd, //运行的窗口句拼
LPCTSTR lpOperation, // 运行方式
LPCTSTR lpFile, // 文件及路径
LPCTSTR lpParameters, // 参数(一般程序没有)
LPCTSTR lpDirectory, // 默认搜索路径
INT nShowCmd // 当程序运行后的显示方式
)
我想用变量传递文件路径和文件名,但是打不开文件,求解,或者有其他更好的方法打开外部文件,这个文件时用户指定的,求大神指个思路。
2014年09月09日 08点09分 1
level 9
仅供参考
BOOL APP_RUN(LPCTSTR lpszAppPath,int nCmdShow,LPCTSTR lpszParam)
{
CFileFind finder;
CString strRoot,strApp;
BOOL bRet = finder.FindFile(lpszAppPath);
if (FALSE==bRet)
{
return FALSE;
}else
{
finder.FindNextFile();
strRoot = finder.GetRoot();
strApp = finder.GetFileName();
}
SHELLEXECUTEINFO Se = {0};
Se.cbSize = sizeof(SHELLEXECUTEINFO);
Se.lpVerb = _T("open");
Se.lpFile = strApp;
Se.lpParameters = lpszParam;
Se.lpDirectory = strRoot;
Se.nShow = nCmdShow;
Se.fMask = SEE_MASK_FLAG_NO_UI;
bRet = ShellExecuteEx(&Se);
return bRet;
}
2014年09月09日 08点09分 3
有点复杂,我得好好看看,谢谢大神
2014年09月09日 08点09分
额,思路就是先构造结构体存储被打开文件的信息,然后再用shellexecute打开这个结构体?
2014年09月09日 08点09分
回复 逆回溯 :我用的是ShellExecuteEx,具体函数使用建议学会自己查看MSDN
2014年09月09日 08点09分
回复 89198408 :恩,好的,回去看看,谢谢了
2014年09月09日 09点09分
level 12
可以看下返回值HINSTANCE 是什么,以下是我程序中所使用的函数你可以作为参考,看看是不是参数哪里传的有问题,然后导致你失败的HINSTANCE hInstance = ::ShellExecute(GetDesktopWindow(), _T("open"), _T("zupdate.exe"), W2CT(os.str().c_str()), szSystem, SW_SHOW); 然后szSystem变量是这样获取的
TCHAR szSystem[MAX_PATH];
::GetSystemDirectory(szSystem, MAX_PATH);
你可以参考下吧~~
2014年09月10日 04点09分 4
已经解决了。后来发现是原来传递的变量的生存期早就结束了,后来添加到类里就解决了,不过还是谢谢了
2014年09月10日 05点09分
回复 逆回溯 :没事 说白了 还是传的参数有问题,你看返回值 肯定也是会报错的···
2014年09月10日 05点09分
1