双击关联

Microsoft777 2008-05-12 10:41:11
有一个文件
怎么样让它和一个 EXE 关联起来
当双击这个文件的时候
就调用 EXE 执行这个程序
我写了一个批处理文件
当双击这个文件的时候可以弹出相应的 EXE
但是这个文件没有加载进 EXE
怎么让 EXE 接受这个文件的路径信息呢
谢谢
...全文
75 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveshell 2008-05-12
  • 打赏
  • 举报
回复
只关联单个文件还是关联后缀?关联一种后缀的话可以改注册表来实现
引力场变动源 2008-05-12
  • 打赏
  • 举报
回复
假设打开文件的函数是LoadFile(LPTSTR filename)
在对话框的OnInitDialog函数中这样调用:

string fn=AfxGetApp()->m_lpCmdLine;
if(fn.size()!=0)
{
if(fn[0]=='\"') //如果命令行中给出的文件路径带被双引号包含的话,需要去掉双引号
{
fn=fn.substr(1,fn.length()-2);
}
LoadFile(fn.c_str());
}


上面的代码是多字节的版本,如果是Unicode程序的话,需要将string改成wstring,比较双引号的时候也要用这个:if(fn[0]==L'\"')

然后因为用到了标准库,所以需要包含头文件并且引入名称空间:
#include <string>
using namespace std;

当然,你也可以不用标准库,自己处理一下双引号的问题^^
Microsoft777 2008-05-12
  • 打赏
  • 举报
回复
是一个基于对话框的MFC程序
我具体应该怎么做
才能让这个被打开文件的路径
和这个基于对话框的MFC程序关联起来呢
引力场变动源 2008-05-12
  • 打赏
  • 举报
回复
EXE程序要能接收命令行并且进行处理才行。
如果是控制台程序的话,命令行是main函数的参数:
int _tmain(int argc, _TCHAR* argv[])
其中atgv[1]就是文件的路径
如果是MFC程序的话,命令行参数,也就是文件路径在theApp.m_lpCmdLine
Microsoft777 2008-05-12
  • 打赏
  • 举报
回复
谢谢楼上两位
尤其是 Silenker
结帖,送分
Microsoft777 2008-05-12
  • 打赏
  • 举报
回复
我用 CString 替换了一下
可以的
下面是我的代码


CString strPath = AfxGetApp()->m_lpCmdLine;

if (!strPath.IsEmpty())
{
int nPos = strPath.GetLength();
if ('"' == strPath.GetAt(nPos - 1))
strPath.Delete(nPos - 1);

m_kCurrentOpenedPakPath = strPath;

if (!LoadPakFile(m_kCurrentOpenedPakPath))
{
assert(FALSE);
return FALSE;
}
}

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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